Классы и объекты
Объект - это "кирпичик" в ООП-приложении. Объект инкапсулирует (реализует, включает в себя) часть приложения: процесс, порцию данных или какой-либо более абстрактный объект. Объект объединяет в себе данные и функции для работы с этими данными. Для описания типа объекта в ООП имеется специальное понятие - класс. Определенные классы позволяют создавать в памяти компьютера объекты, то есть реальные именованные экземпляры этих классов.
Термины "класс" и "объект" - не одно и то же. Класс - это только описательная сторона жизни объектов. Чертежи, по которым объект может быть построен. Само по себе описание класса ничего не меняет, просто описывает определенные правила поведения. В противоположность этому, реально созданный в памяти класс является объектом. С объектом можно производить какие-то реальные действия - в соответствии с правилами, описанными в классе.
Объект включает в себя поля данных (свойства) и методы для работы с ними. "Поля" и "свойства" - в общем виде не одно и то же. Поле - это непосредственно данные, которые хранятся внутри объекта и имеют некоторый тип.
// Класс, описывающий чашку кофе.
class CupOfCoffe {
private :
// Поле. Сколько ложек сахара
// содержит данная чашка кофе.
int _sugar = 0;
// Сеттер свойства (процедура, которая
// отрабатывается при установке свойства
// извне. Логика не обязательно должна быть
// простой. Можно, например, проверить, не
// пытается ли программа записать в количество
// ложек сахара отрицательное значение.
void setSugar (int sugar) {
_sugar = sugar;
};
// Геттер свойства (процедура, которая отрабатывается
// при чтении свойства класса.
int getSugar() {
return( _sugar );
};
public:
// Публичное свойство содержания сахара.
property <int, CupOfCoffe> Sugar;
// Конструктор класса
CapOfCoffe() {
Sugar.init( this, getSugar, setSugar );
};
};
А свойство - это, вообще говоря, процедура для установки полей объекта. При этом по синтаксису в некоторых языках программирования "поле" и "свойство" выглядят одинаково, но при установке свойства отрабатывается еще и процедура "сеттера" (а при чтении - "геттера", англоязычные термины setterиgetterприжились в русском языке). В приведенном выше примере класса чашки кофе код программы может выглядеть следующим образом:
// Создание объекта, экземпляра класса "чашка кофе".
// При этом автоматически будет вызван конструктор класса.
CapOfCoffe cap = new CapOfCoffe();
// Это действие вызовет ошибку на этапе компиляции,
// потому что поле _sugar является приватным, обращение
// извне к нему - запрещено. Вызывающая программа просто
// "ничего не знает" о таком поле.
cap._sugar = 2;
// Это действие приведет к отработке приватного метода
// setSugar, в результате чего в поле _sugar окажется
// значение 2.
cap.Sugar = 2;
// Попытка чтения свойства приведет к "скрытой" работе
// геттера
int sugar = cap.Sugar;
Есть "три кита", три базовых принципа, составляющих основу ООП:
Инкапсуляция
Наследование
Полиморфизм
- Оглавление
- Введение.
- Предмет рассмотрения данного курса.
- Одно-, двух- и многоуровневые приложения.
- Интернет.
- Адрес в интернете
- 2001:0Db8:11a3:09d7:1f34:8a2e:07a0:765d
- Имя в интернете
- Службы (сервисы)
- Сокета.
- Что такое "сокета" (socket) ?
- Создание серверной сокеты (пример на языке c).
- Сериализация
- Основы верстки: таблицы
- Основы верстки: фреймы
- Основы верстки: позиционирование участков сайта
- Протокол http
- Структура запроса (Request).
- Структура ответа (Response).
- Перспективы развития http.
- Интернет-приложения
- Web-приложения
- Web-сервисы
- Особенности проектирования
- Особенности пользовательского интерфейса
- Программирование интернет-приложений
- Объектно-ориентированное программирование
- Классы и объекты
- Жизненный цикл класса
- Статические члены класса
- Инкапсуляция
- Наследование
- Полиморфизм
- Интерфейсы
- Событийно-ориентированное программирование
- Совместная работа над проектом
- Технологии создания web-клиентов
- Dom (Document Object Model)
- Каскадные таблицы стилей
- JavaScript
- Обфускация и динамическое получение скриптов
- Java Applets
- ActiveX/npapi
- Adobe Flash
- Web-серверы
- Nginx (engine X)
- Технологии, применяемые на стороне сервера
- ИнтерфейсCgi
- КонцепцияMvc
- Сервлеты
- JavaScript
- Хранение данных