Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Принципы построения классов.Содержание книги
Поиск на нашем сайте В ООП существует три основных принципа построения классов: 1. Инкапсуляция — это свойство, позволяющее объединить в классе и данные, и методы, работающие с ними и скрыть детали реализации от пользователя. 2. Наследование — это свойство, позволяющее создать новый класс-потомок на основе уже существующего, при этом все характеристики класса родителя присваиваются классу-потомку. 3. Полиморфизм — свойство классов, позволяющее использовать объекты классов с одинаковым интерфейсом без информации о типе и внутренней структуре объекта. рассмотрим структуру объявления классов.
При объявлении класса, не обязательно объявлять три спецификатора доступа, и не обязательно их объявлять в таком порядке. Но лучше сразу определиться с порядком объявления спецификаторов доступа, и стараться его придерживаться. Разработаем программу, в которой объявим простейший класс, в котором будет объявлена одна функция, печатающая сообщение. #include "stdafx.h" #include "stdio.h" #include <iostream> // начало объявления класса class CppStudio // имя класса { public: // спецификатор доступа void message() // функция (метод класса) выводящая сообщение на экран { printf("hello\n"); } }; // конец объявления класса CppStudio
int main() { CppStudio obj; // объявление объекта obj.message(); // вызов функции класса message system("pause"); return 0; } Мы определили класс с именем CppStudio. В теле класса объявлен спецификатор доступа public, который позволяет вызывать другим функциям методы класса, объявленные после public. Вот именно поэтому в главной функции, мы смогли вызвать функцию message(). В классе CppStudio объявлена всего одна функция, которая не имеет параметров и выводит сообщение на экран. Методы класса — это те же функции, только объявлены они внутри класса, поэтому всё, что относится к функциям актуально и для методов классов. Объявление классов выполняется аналогично объявлению функций, то есть класс можно объявлять в отдельном файле или в главном файле. Каждый объект имеет какие-то свои свойства или атрибуты, которые характеризуют его на протяжении всей жизни. Атрибуты объекта хранятся в переменных, объявленных внутри класса, которому принадлежит данный объект. Причём, объявление переменных должно выполняться со спецификатором доступа private. Такие переменные называются элементами данных. Так как элементы данных объявлены в private, то и доступ к ним могут получить только методы класса, внешний доступ к элементам данных запрещён. Поэтому принято объявлять в классах специальные методы — так называемые set и get функции, с помощью которых можно манипулировать элементами данных. set-функции инициализируют элементы данных, get-функции позволяют просмотреть значения элементов данных. Доработаем класс CppStudioтак, чтобы в нём можно было хранить дату в формате дд.мм.гг. Для изменения и просмотра даты реализуем соответственно set и get функции.
#include "stdafx.h" #include "stdio.h" #include <iostream>
class CppStudio // имя класса { private: // спецификатор доступа private int day, // день month, // месяц year; // год public: // спецификатор доступа public void message() // функция (метод класса) выводящая сообщение на экран { printf("\nwebsite: cppstudio.comntheme: Classes and Objects in C + +\n"); } void setDate(int date_day, int date_month, int date_year) // установка даты в формате дд.мм.гг { day = date_day; // инициализация день month = date_month; // инициализация месяц year = date_year; // инициализация год } void getDate() // отобразить текущую дату { printf("Date: %d.%d.%d", day, month, year); } }; // конец объявления класса CppStudio
int main(int argc, char* argv[]) { setlocale(LC_ALL, "rus"); // установка локали int day, month, year; printf("Введите текущий день месяц и год!\n"); printf("день: "); scanf("%d",&day); printf("месяц: "); scanf("%d",&month); printf("год: "); scanf("%d",&year); CppStudio obj; // объявление объекта obj.message(); // вызов функции класса message obj.setDate(day, month, year); // инициализация даты obj.getDate(); // отобразить дату system("pause"); return 0; } В определении класса появился новый спецификатор доступа private, Данный спецификатор доступа ограничивает доступ к переменным, которые объявлены после него и до начала спецификатора доступа public. Таким образом, к переменным day, month, year, могут получить доступ только методы класса. Функции, не принадлежащие классу, не могут обращаться к этим переменным. Элементы данных или методы класса, объявленные после спецификатора доступа private, но до начала следующего спецификатора доступа называются закрытыми элементами данных и закрытыми методами класса. Следуя принципу наименьших привилегий и принципу хорошего программирования, целесообразно объявлять элементы данных после спецификатора доступа private, а методы класса — после спецификатора доступа public. Тогда, для манипулирования элементами данных, объявляются специальные функции setDate() и getDate(). Подробно рассмотрим каждый метод. Метод setDate()инициализирует переменные day, month, year. Чтобы просмотреть, значения в закрытых элементах данных объявлена функция getDate(),которая возвращает значения из переменных day, month, yearв виде даты.На этом определение класса закончено, в main(), как и всегда, создаем объект класса, и через объект вызываем его методы. Если бы элементы данных были объявлены после спецификатора public мы бы смогли к ним обратиться точно также, как и к методам класса.
В VC++ введено понятие компонентов – специальных классов, в которых объекты определяются такими характеристиками, как свойства, методы и события. Причем, в отличии от работы с обычными классами, при работе в VC++ возможно манипулировать видом и функциональным поведение компонентов и на стадии проектирования приложения, и в момент его выполнения. Здесь вводится еще одно понятие событие. Что это такое? Это тоже функция, которая запускается при наступлении какого-либо события. В системе Windows к событиям можно отнести нажатие кнопкой мыши, нажатие клавиши и т.п. Например,
|
|||
|
Последнее изменение этой страницы: 2017-02-10; просмотров: 529; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.156 (0.008 с.) |