Цели урока:
- дать понятие класса;
- дать понятие метода;
- дать понятие объекта;
- дать понятие инкапсуляции;
- дать понятие полиморфизма;
- дать понятие наследования.
Воспитательные цели:
- воспитывать чувство критического отношения к собственным знаниям;
- умение логически мыслить.
Развивающие цели:
- развивать мышление;
- усидчивость.
План урока:
- Организационный момент.
- Объяснение нового материала.
- Закрепление новой темы.
- Первичный контроль знаний учащихся.
- Итог урока. Домашняя работа
Ход урока
1. Организационный момент
Учитель: На прошлом уроке мы начали разбирать тему «ООП». Сегодня мы продолжим изучение данной темы. Но мы не просто будем следить за ходом моего объяснения по тетрадям, но и выполнять по ходу объяснения тестовую работу, которая будет помогать мне сориентироваться в том, на сколько хорошо вы усвоили материал. (Содержание листов опроса смотрите в приложении «ООП»)
Оценки за эту часть работы не выставляются, поэтому постарайтесь максимально самостоятельно выполнять эту работу.
Согласитесь, что очень трудно было на прошлой работе оценить то, на сколько ты глубоко усвоил данный материал. Казалось, что все понятно, но, когда началась самостоятельная работа, выяснилось, что на многие вопросы вы не знаете ответа.
Отвечая на вопросы, вы помогаете мне сориентироваться, на сколько глубоко вы усвоили данный фрагмент урока.
Поэтому, повторюсь еще раз: постарайтесь максимально самостоятельно отвечать на вопросы теста.
2. Изучение нового материала с параллельной проверкой усвоения нового материала.
Объектно-ориентированное программирование (ООП) – это методика разработки программ, в основе которой лежит понятие объекта, как некоторой структуры, описывающей объект реального мира и его поведение.
Класс – это сложная структура, включающая в себя описания данных, процедур и функций, которые могут быть выполнены над объектом.
В программе описание класса помещается в разделе описания типов Type.
Type
TShcola=class
private
fname: string[15];
address: string[35];
public
procedure show;
end;
{TShcola – имя класса;
fname, address – имена полей;
show – имя метода}
Объект – это осязаемая сущность, которая четко проявляет свое поведение.
В программе описание объекта помещается в разделе описания переменных var
var
uchenik: TShcola;
uchitel: TShcola;
{ TShcola=class
private
fname: string[15];
address: string[35];
constructor create;
public
procedure show;
end;}
Доступ к полю fname объекта uchenik будет осуществляться следующим способом: Uchenik. fname
Следует обратить особое внимание на то, что в Object Pascal объект является динамической структурой. Переменные-объекты содержат не данные, а ссылку на данные объекта. Поэтому программист должен позаботиться о выделении памяти для этих данных.
Выделение памяти происходит при помощи специального метода класса – конструктора, которому обычно присваивается имя create (создать).
Чтобы подчеркнуть особую роль этой процедуры, вместо слова procedure используется слово constructor.
Выделение памяти для данных объекта происходит присвоением значения результата применения метода-конструктора к типу объекта.
Например, после выполнения инструкции
uchenik:= TShcola.create;
выделяется необходимая память для данных объекта uchenik
Очистку памяти от полей объекта осуществляет метод – деструктор free:
uchenik. Free
Метод класса (процедуры и функции, объявление которых включено в описание класса) выполняет действия над объектами класса.
Чтобы метод был выполнен, надо указать имя объекта и имя метода, отделив одно имя от другого точкой: uchenik.show;
TShcola=class
private
fname: string[15];
address: string[35];
constructor create;
public
procedure show;
end;
. . .
var
uchenik: TShcola;
uchitel: TShcola;
. . .
uchenik. Fname:=’Петров’;
uchenik. Address:=’Абая, 55’;
uchenik. Show;
procedure TShcola. Show;
begin
Showmessage(‘Имя: ’+ fname + ‘ Адрес: ’+ address);
end;
На экране появится: Имя: Петров Адрес: Абая, 55
Инкапсуляция – скрытие полей объекта с целью обеспечения доступа к ним только посредством методов класса.
В Object Pascal ограничение доступа к полям объекта реализуется при помощи свойств объекта. Свойство объекта характеризуется полем, которое хранит значение свойства, и двумя методами, которые обеспечивают доступ к полю свойства.
Метод установки значения свойства называется методом записи свойства (write), метод получения значения свойства называется методом чтения свойства (read).
В описании класса перед именем свойства записывают слово property (свойство). После имени свойства указывается его тип, затем имена методов, обеспечивающих доступ к значению свойства. После слова read указывают имя метода, которое обеспечивает чтение свойства, после слова write – записи свойства имя метода.
В приведенном примере свойство name доступно только для чтения, а свойство address – для чтения и записи.
Type
Tname: string[15];
Taddress: string[35];
TShcola=class
private
fname: Tname;// значение
свойства name
address: Taddress;
constructor create;
function Getname: Tname;
function Getaddress: Taddress;
procedure Setaddress: Taddress;
public
procedure show;
property name: Tname
read Getname;
property address: Taddress
read Getaddress
write Setaddress;
------------
Tklas = class (TShcola)
Nomer: integer;
…
end;
Наследование – механизм получения новых классов, посредством добавления полей, свойств и методов к уже существующим классам.
При этом новый класс (потомок) наследует свойства и методы родительского класса (предка).
В объявлении класса-потомка указывают класс родителя
Function TShcola.info: string;
begin
resut:=’’;
end;
Function TStud.info: string;
begin
resut:=fname+’учится в группе’ + inttostr(Nomer);
end;
Function TProf.info: string;
begin
resut:=fname+’название кафедры:’ + Nazv;
end;
Полиморфизм – это возможность использовать одинаковые имена для методов, входящих в различные классы.
Принцип полиморфизма обеспечивает при применении метода к объекту использование именно того метода, который соответствует классу объекта.
Пусть определены три класса, один из них является базовым для двух других.
В каждом из этих классов определен метод info. В базовом классе при помощи директивы virtual метод info объявлен виртуальным. Объявление метода виртуальным дает возможность дочернему классу произвести замену виртуального метода своим собственным. В каждом дочернем классе определен свой метод info, который замещает соответствующий метод родительского класса
Метод порожденного класса, который замещает виртуальный метод родительского класса, помечен директивой override.
В программе список людей можно представить массивом объектов класса TShcola
List: array[1..n] of TShcola;
Директива private предназначена для скрытия некоторых деталей описания объекта от пользователя и недоступны за пределами модуля.
3. Первичный контроль
САМОСТОЯТЕЛЬНАЯ РАБОТА
по теме «Основные понятия объектно-ориентированного программирования»
1. Как называется класс, который приведен на примере ниже?
type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
procedure Button1Click(Sender: TObject);
. . .
end;
2. Что обозначает выражение (TForm) в строке TForm1 = class(TForm)?
3. Выпишите название полей, приведенных ниже?
TDenartament=class
private
fsotrudnic: string[15];
faddress: string[15];
constructor create;
function Getname: Tname;
function Getaddress: Taddress;
procedure Setaddress: Taddress;
public
procedure show;
. . .
4. Выпишите название методов, приведенных ниже?
type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure ComboBox1Click(Sender: TObject);
. . .
end;
5. Что обозначает следующие выражения?
var
Form1:TForm;
4. Подведение итогов уроков. Оценка степени усвояемости материала.
5. Домашнее задание. Учить конспект.
Тест по теме «Основные понятия объектно-ориентированного программирования» (Приложение1)
Учитель: Закрасьте зеленым цветом правильные ответы.