Объектно-ориентированное программирование: различия между версиями

Содержимое удалено Содержимое добавлено
Строка 78:
== Определение новых классов ==
 
Свойство: Теперь, когда мы рассмотрели, как создавать объекты для существующих классов, мы можем обратиться к определению новых классов. Класс - это просто набор методов, работающих с определёнными локальными данными.
 
C++: Вот C++ синтаксис определения простого класса:
<source lang="cpp">
class Date {
private:
Строка 92 ⟶ 93 :
int Year ();
};
</source>
А вот определение одного из методов:
<source lang="cpp">
void Date::Init (int d, int m, int y)
{
Строка 99 ⟶ 102 :
yy = y;
}
</source>
 
Java: Синтаксис Java очень похож на синтаксис C++:
<source lang="java">
class Date {
int dd = 1;
Строка 111 ⟶ 116 :
public int Year () {return yy;}
}
</source>
Основная разница состоит в том, что код каждого метода пишется там же, где он объявляется (при этом функции не становятся вставными (inline), как в C++), и в том, что вы можете инициализировать элементы данных класса. Фактически, если вы не сделаете этого, то Java проинициализирует все элементы данных за вас, используя значения по умолчанию.
 
OP: В Object Pascal синтаксис определения класса другой, но похожий скорее на C++, чем на Java:
<source lang="delphi">
type
Date = class
Строка 135 ⟶ 142 :
Result := dd;
end;
</source>
 
Как видите, здесь есть синтаксические отличия: методы определяются с ключевыми словами '''function''' и '''procedure''', методы без параметров не используют скобок, методы просто объявляются внутри определения класса, тогда как определяются позже, как это обычно делается в C++. Однако Pascal использует нотацию с точкой, а C++ - оператор :: (недоступный в Object Pascal и Java).
 
Примечание: Доступ к текущему объекту. В ОО языках методы отличаются от глобальных функций тем, что у них присутствует скрытый параметр, ссылка или указатель на объект, с которым мы работаем. Просто эта ссылка на текущий объект по-разному называется. Это this в C++ и Java, selfSelf в Object Pascal.
 
== Конструкторы ==