extracted_text:
Объект и класс
Поля, свойства и методы
События
Инкапсуляция
Наследование
Полиморфизм
Методы
Перегрузка методов
Области видимости
Объект изнутри

  Для создания более или менее
сложных приложений нужны навыки объектно -ориентированного дизайна, а для
приложений в свою очередь — четкое знание возможностей вашей среды
программирования. Поэтому большое  внимание уделяется применении ООП в среде
Delphi 7.
По сравнению с традиционными способами
программирования ООП обладает рядом преимуществ. Главное из них заключается в
том, что эта концепция в наибольшей степени соответствует внутренней логике
функционирования операционной системы (ОС) Windows. Программа, состоящая из
отдельных объектов, отлично приспособлена к реагированию на события,
происходящие в ОС. К другим преимуществам ООП можно отнести большую надежность
кода и возможность повторного использования отработанных объектов.
Рассмотрим способы реализации основных
механизмов ООП в Object Pascal и Delphi:
·
 понятия
объекта, класса и компонента;
·
 основные
механизмы ООП: инкапсуляция, наследование и полиморфизм;
·
 особенности
реализации объектов;
·
 взаимодействие
свойств и методов.
1.
Объект
и класс
Классом в Object Pascal называется
структура языка, которая может иметь в своем составе переменные, функции и
процедуры. Переменные в зависимости от предназначения именуются полями или
свойствами. Процедуры и функции класса — методами. Соответствующий классу тип
будем называть объектным типом:
type
TMyObject =
class(TObject)
MyField: Integer;
function MyMethod:
Integer;
end;
В этом примере описан класс TMyObject, содержащий поле
MyField и метод
MyMethod.
Поля объекта аналогичны полям записи
(record). Это данные, уникальные для каждого созданного в программе экземпляра
класса. Описанный здесь класс TMyObject имеет одно поле — MyField.
Методы — это процедуры и функции,
описанные внутри класса и предназначенные для операций над его полями. В состав
класса входит указатель на специальную таблицу, где содержится вся информация,
нужная для вызова методов. От обычных процедур и функций методы отличаются тем,
что им при вызове передается указатель на тот объект, который их вызвал.
Поэтому обрабатываться будут поля именно того объекта, который вызвал метод.
Внутри метода указатель на вызвавший его объект доступен под зарезервированным
именем self.
Понятие свойства будет подробно
рассмотрено ниже. Пока можно определить его как поле, доступное для чтения и
записи не напрямую, а через соответствующие методы.
Классы могут быть описаны либо в секции
интерфейса модуля, либо на верхнем уровне вложенности секции реализации. Не
допускается описание классов "где попало", т. е. внутри процедур и
других блоков кода.
Разрешено опережающее объявление классов,
как в следующем примере:
type
TFirstObject =
class;
TSecondObject =
class(TObject)
Fist :
TFirstObject;
...
end;
TFirstObject =
class(TObject)
...
end;
Чтобы использовать класс в программе,
нужно, как минимум, объявить переменную этого типа. Переменная объектного типа
называется экземпляром класса или объектом:
var
AMyObject: TMyObject;
До введения термина "класс" в
языке Pascal существовала двусмысленность определения "объект", который
мог обозначать и тип, и переменную этого типа. Теперь же существует четкая
граница: класс — это описание, объект — то, что создано в соответствии с этим
описанием.
Как создаются и уничтожаются объекты?
В Object Pascal экземпляры объектов могут
быть только динамическими. Это означает, что в приведенном выше фрагменте
переменная AMyObject на самом деле является указателем, содержащим адрес
объекта.
Объект "появляется на свет" в
результате вызова специального метода, который инициализирует объект —
конструктора. Созданный экземпляр уничтожается другим методом — деструктором:
AMyObject := TMyObject.Create;
{ действия с созданным объектом }
...
AMyObject.Destroy;
Но, ведь объекта еще нет, как мы можем
вызывать его методы? Обратите внимание, что вызывается метод TMyObject.Create,
а не AMyObject.Create. Есть такие методы (в том числе конструктор), которые
успешно работают до (или даже без) создания объекта. О подобных методах,
называемых методами класса, пойдет речь чуть ниже.
В Object Pascal конструкторов у класса
может быть несколько. Общепринято называть конструктор create (в отличие от
Turbo Pascal, где конструктор обычно назывался init, и от C++, где его имя
совпадает с именем класса). Типичное название деструктора —
Destroy.
type
TMyObject =
class(TObject)
  MyField:
Integer;
Constructor
Create;
Destructor
Destroy;
Function MyMethod:
Integer;
end;
Для уничтожения экземпляра объекта
рекомендуется использовать метод Free, который первоначально проверяет
указатель (не равен ли он Nil) и только затем вызывает Destroy:
AMyObj ect.Free ;
До передачи управления телу конструктора
происходит собственно создание объекта — под него отводится память, значения
всех полей обнуляются. Далее выполняется код конструктора, написанный
программистом для инициализации экземпляров данного класса. Таким образом, хотя
на первый взгляд синтаксис конструктора схож с вызовом процедуры (не определено
возвращаемое значение), но на самом деле конструктор — - это функция,
возвращающая созданный и инициализированный объект.
Примечание
Конструктор создает новый объект только в
том случае, если перед его именем указано имя класса. Если указать имя уже
существующего объекта, он поведет себя по-другому: не создаст новый объект, а
только выполнит код, содержащийся в теле конструктора.
Чтобы правильно инициализировать в
создаваемом объекте поля, относящиеся к классу-предку, нужно сразу же при входе
в конструктор вызвать конструктор предка при помощи зарезервированного слова
inherited:
constructor
TMyObject.Create;
begin
inherited Create;
...
end;
Взяв любой из примеров, прилагаемых к этой
книге или поставляемых вместе в Delphi, вы почти не увидите там вызовов
конструкторов и деструкторов. Дело в том, что любой компонент, попавший при
визуальном проектировании в ваше приложение из Палитры компонентов, включается
в определенную иерархию. Иерархия эта замыкается на форме (класс TForm): для
всех ее составных частей конструкторы и деструкторы вызываются автоматически,
незримо для программиста. Кто создает и уничтожает формы? Это делает приложение
(глобальный объект с именем Application). В файле проекта (с расширением dpr)
вы можете увидеть вызовы метода Application.CreateForm, предназначенного для
этой цели.
Что же касается объектов, создаваемых
динамически (во время выполнения приложения), то здесь нужен явный вызов
конструктора и метода Free.
Поля, свойства и
методы
Поля класса являются переменными,
объявленными внутри класса. Они предназначены для хранения данных во время
работы экземпляра класса (объекта). Ограничений на тип полей в классе не
предусмотрено. В описании класса поля должны предшествовать методам и свойствам.
Обычно поля используются для обеспечения выполнения операций внутри класса.
 Примечание
При объявлении имен полей принято к
названию добавлять заглавную букву F. Например FSomeField.
Итак, поля предназначены для использования
внутри класса. Однако класс должен каким-либо образом взаимодействовать с
другими классами или программными элементами приложения. В подавляющем
большинстве случаев класс должен выполнить с некоторыми данными определенные
действия и представить результат.
Для получения и передачи данных в классе
применяются свойства. Для объявления свойств в классе используется
зарезервированное слово property.
Свойства представляют собой атрибуты,
которые составляют индивидуальность объекта и помогают описать его. Например,
обычная кнопка в окне приложения обладает такими свойствами, как цвет, размеры,
положение. Для экземпляра класса "кнопка" значения этих атрибутов
задаются при помощи свойств — специальных переменных, определяемых ключевым
словом property. Цвет может задаваться свойством Color, размеры — свойствами
Width и Height и т. д.
Так как свойство обеспечивает обмен
данными с внешней средой, то для доступа к его значению используются
специальные методы класса. Поэтому обычно свойство определяется тремя
элементами: полем и двумя методами, которые осуществляют его чтение/запись:
type
 TAnObject =
class(TObject)
function GetColor:
TSomeType;
procedure
SetColor(ANewValue: TSomeType);
property AColor:
TSomeType read GetColor write SetColor;
  end;
В данном примере доступ к значению
свойства AColor осуществляется через вызовы методов GetColor и SetColor. Однако
в обращении к этим методам в явном виде нет необходимости: достаточно написать:

AnObject.AColor :=
AValue;
AVariable :=
AnObject.AColor;
и компилятор самостоятельно оттранслирует
обращение к свойству AColor в вызовы методов Getcolor или Setcolor. Tо есть
внешне свойство выглядит в точности как обычное поле, но за всяким обращением к
нему могут стоять нужные вам действия. Например, если у вас есть объект,
представляющий собой квадрат на экране, и его свойству "цвет" вы
присваиваете значение "белый", то произойдет немедленная перерисовка,
приводящая реальный цвет на экране в соответствие со значением свойства.
Выполнение этой операции осуществляется методом, который связан с установкой
значения свойства "цвет".
В методах, входящих в состав свойств,
может осуществляться проверка устанавливаемой величины на попадание в
допустимый диапазон значений и вызов других процедур, зависящих от вносимых изменений.
Если же потребности в специальных процедурах чтения и/или записи нет, можно
вместо имен методов применять имена полей. Рассмотрим следующую конструкцию:
TPropObject =
class(TObject)
FValue:
TSomeType;
procedure
DoSomething;
function Correct(AValue:
Integer):boolean;
procedure
SetValue(NewValue: Integer);
property AValue:
Integer read FValue write SetValue;
 end;
...
procedure
TPropObject.SetValue(NewValue: Integer);
 begin
if
(NewValueoFValue) and Correct(NewValue) then EValue := NewValue;
DoSomething;
end;
В этом примере чтение значения свойства
AValue означает просто чтение поля rvalue. Зато при присвоении значения внутри
SetValue вызывается сразу два метода.
Если свойство должно только читаться или
записываться, в его описании может присутствовать соответствующий метод:
type
TAnObject =
class(TObject)
property
AProperty: TSomeType read GetValue;
end;
В этом примере вне объекта значение
свойства можно лишь прочитать; попытка присвоить свойству AProperty значение
вызовет ошибку компиляции.
Для присвоения свойству значения по
умолчанию используется ключевое слово default:
property Visible:
boolean read FVisible write SetVisible default True;
Это означает, что при запуске программы
свойство будет установлено компилятором в True.
Свойство может быть и векторным; в этом
случае оно внешне выглядит как массив:
property
APoints[Index : Integer]:TPoint read GetPoint write SetPoint;
На самом деле в классе может и не быть
соответствующего поля — массива. Напомним, что вся обработка обращений к
внутренним структурам класса может быть замаскирована.
Для векторного свойства необходимо описать
не только тип элементов массива, но также имя и тип индекса. После ключевых
слов read и write в этом случае должны стоять имена методов — использование
здесь полей массивов недопустимо. Метод, читающий значение векторного свойства,
должен быть описан как функция, возвращающая значение того же типа, что и
элементы свойства, и имеющая единственный параметр того же типа и с тем же
именем, что и индекс свойства:
function
GetPoint(Index:Integer):TPoint;
Аналогично, метод, помещающий значения в
такое свойство, должен первым параметром иметь индекс, а вторым — переменную
нужного типа (которая может быть передана как по ссылке, так и по значению):
procedure
SetPoint(Index:Integer; NewPoint:TPoint);
У векторных свойств есть еще одна важная
особенность. Некоторые классы в Delphi (списки TList, наборы строк TStrings)
"построены" вокруг основного векторного свойства (см. гл. 7).
Основной метод такого класса дает доступ к некоторому массиву, а все остальные
методы являются как бы вспомогательными. Специально для облегчения работы в
этом случае векторное свойство может быть описано с ключевым словом default:
type
TMyObject = class;

property
Strings[Index: Integer]: string read Get write Put; default;
end;
Если у объекта есть такое свойство, то
можно его не упоминать, а ставить индекс в квадратных скобках сразу после имени
объекта:
var AMyObject:
TMyObject;
begin
...
AMyObject.Strings[1]
:= 'First'; {первый способ}
 AMyObject[2]
:= 'Second'; (второй способ}
...
end.
Будьте внимательны, применяя
зарезервированное слово default, — как мы увидели, для обычных и векторных
свойств оно употребляется в разных случаях и с различным синтаксисом.
О роли свойств в Delphi красноречиво
говорит следующий факт: у всех имеющихся в распоряжении программиста
стандартных классов 100% полей недоступны и заменены базирующимися на них
свойствами. Рекомендуем при разработке собственных классов придерживаться этого
же правила.
Внимательный читатель обратил внимание,
что при объяснении терминов "поле" и "свойство" мы
использовали понятие метода, и наверняка понял его общий смысл. Итак, методом
называется объявленная в классе функция или процедура, которая используется для
работы с полями и свойствами класса. Согласно принципам ООП (см. разд.
"Инкапсуляция" далее в этой главе), обращаться к свойствам класса можно
только через его методы. От обычных процедур и функций методы отличаются тем,
что им при вызове передается указатель на тот объект, который их вызвал.
Поэтому обрабатываться будут данные именно того объекта, который вызвал метод.
На некоторых особенностях использования методов мы остановимся ниже.

События
Программистам, давно работающим в Windows,
наверное, не нужно пояснять смысл термина "событие". Сама эта среда и
написанные для нее программы управляются событиями, возникающими в результате
воздействий пользователя, аппаратуры компьютера или других программ. Весточка о
наступлении события — это сообщение Windows, полученное так называемой функцией
окна. Таких сообщений сотни, и, по большому счету, написать программу для
Windows — значит определить и описать реакцию на некоторые из них.
Работать с таким количеством сообщений,
даже имея под рукой справочник, нелегко. Поэтому одним из больших преимуществ
Delphi является то, что программист избавлен от необходимости работать с
сообщениями Windows (хотя такая возможность у него есть). Типовых событий в
Delphi — не более двух десятков, и все они имеют простую интерпретацию, не
требующую глубоких знаний среды.
Рассмотрим, как реализованы события на
уровне языка Object Pascal. Событие — это свойство процедурного типа,
предназначенное для создания пользовательской реакции на то или иное входное
воздействие:
property
OnMyEvent: TMyEvent read FOnMyEvent write FOnMyEvent;
Здесь FOnMyEvent — поле процедурного типа,
содержащее адрес некоторого метода. Присвоить такому свойству значение — значит
указать объекту адрес метода, который будет вызываться в момент наступления
события. Такие методы называют обработчиками событий. Например, запись:
Application.OnActivate :=
MyActivatingMethod;
означает, что при активизации объекта
Application (так называется объект, соответствующий работающему приложению)
будет вызван метод-обработчик MyActivatingMethod.
Внутри библиотеки времени выполнения
Delphi вызовы обработчиков событий находятся в методах, обрабатывающих
сообщения Windows. Выполнив необходимые действия, этот метод проверяет,
известен ли адрес обработчика, и, если это так, вызывает его:
if
Assigned(FOnMyEvent) then FOnMyEvent(Self);
События имеют разное количество и тип
параметров в зависимости от происхождения и предназначения. Общим для всех
является параметр sender — он указывает на объект-источник события. Самый простой тип —
TNotifyEvent — не имеет других параметров:
TNotifyEvent =
procedure (Sender: TObject) of object;
Тип метода, предназначенный для извещения
о нажатии клавиши, предусматривает передачу программисту кода этой клавиши о
передвижении мыши — ее текущих координат и т. п. Все события в Delphi принято
предварять префиксом On: onCreate, onMouseMove, onPaint и т. д. Дважды щелкнув
в Инспекторе объектов на странице Events в поле любого события, вы получите в
программе заготовку метода нужного типа. При этом его имя будет состоять из
имени текущего компонента и имени события (без префикса On), а относиться он
будет к текущей форме. Пусть, например, на форме Forml есть текст Label1. Тогда
для обработки щелчка мышью (событие Onclick) будет создана заготовка метода
TForm1.Label1click:
procedure TForml.LabellClick(Sender:
TObject);
begin
end;
Поскольку события — это свойства объекта,
их значения можно изменять в любой момент во время выполнения программы. Эта
замечательная возможность называется делегированием. Можно в любой момент взять
способы реакции на события у одного объекта и присвоить (делегировать) их
другому:
Objectl.OnMouseMove :=
Object2.OnMouseMove;
Принцип делегирования позволяет избежать
трудоемкого процесса порождения новых дочерних классов для каждого
специфического случая, заменяя его простой подстановкой процедур. При необходимости
можно выбирать один из нескольких возможных вариантов обработчиков событий.
Но какой механизм позволяет подменять
обработчики, ведь это не просто процедуры, а методы? Здесь как нельзя кстати
приходится существующее в Object Pascal понятие указателя на метод. Отличие
метода от процедуры состоит в том, что помимо явно описанных параметров методу
всегда неявно передается еще и указатель на вызвавший его экземпляр класса
(переменная self). Вы можете описать процедурный тип, который будет совместим
по присваиванию с методом (т. е. предусматривать получение self). Для этого в
описание процедуры нужно добавить зарезервированные слова of object. Указатель на метод — это указатель на такую процедуру.
type
TMyEvent =
procedure(Sender: TObject; var AValue: Integer) of object;
TlstObject =
class;
FOnMyEvent:
TMyEvent;
property
OnMyEvent: TMyEvent read FOnMyEvent write FOnMyEvent;
  end;
T2ndObject =
class;
procedure
SetValuel(Sender: TObject; var AValue: Integer);
procedure
SetValue2(Sender: TObject; var AValue: Integer);
end;
...
var
Objl:
TlstObject;
Obj2:
T2ndObject;
begin
Objl :=
TlstObject.Create;
Obj2 :=
T2ndObject.Create;
Obj1.OnMyEvent :=
Obj2.SetValuel;
Obj1.OnMyEvent :=
Obj2.SetValue2;
...
end.
Этот пример показывает, что при
делегировании можно присваивать методы других классов. Здесь обработчиком
события OnMyEvent объекта Objl по очереди выступают методы SetValuel и
Setvaiue2 объекта Obj2.
Обработчики событий нельзя сделать просто
процедурами — они обязательно должны быть чьими-то методами. Но их можно
"отдать" какому-либо другому объекту. Более того, для этих целей
можно описать и создать специальный объект. Его единственное предназначение —
быть носителем методов, которые затем делегируются другим объектам. Разумеется,
такой объект надо не забыть создать до использования его методов, а в конце —
уничтожить. Можно и не делать этого, объявив методы методами класса, о которых
речь пойдет в одном из последующих разделов.
Мы сейчас решили задачу использования
нескольких разных обработчиков того или иного события для одного объекта. Но не
менее часто требуется решить обратную задачу — а как использовать для различных
событий разных объектов один и тот же обработчик?
Если никакой "персонификации" объекта,
вызвавшего метод, не нужно, все делается тривиально и проблемы не возникает.
Самый простой пример: в современных программах основные функции дублируются
дважды — в меню и на панели инструментов. Естественно, сначала нужно создать и
наполнить метод содержимым (скажем, для пункта меню), а затем в Инспекторе
объектов указать его же для кнопки панели инструментов.
Более сложный случай, когда внутри такого
метода нужно разобраться, кто собственно его вызвал. Если потенциальные
кандидаты имеют разный объектный тип (как в предыдущем абзаце — кнопка и пункт
меню), то именно объектный тип можно применить в качестве критерия:
If Sender is
TMenuItem then ShowMessage('Выбран пункт меню');
Если же все объекты, разделяющие между
собой один обработчик события, относятся к одному классу, то приходится
прибегать к дополнительным ухищрениям. Типовой прием — использовать свойство
Tag, которое имеется у всех компонентов, и, вполне вероятно, именно для этого и
задумывалось:
const colors :
array[0..7]
of
TColor = clWhite,clRed,clBlue,clYellow,clAqua,clGreen,
clMaroon,clBlack);
procedure
TForml.CheckBoxClick(Sender: TObject);
begin
with
TCheckBox(Sender) do
 if Checked
then Color :=
Colors[Tag]
else Color :=
clBtnFace;
end;
Пусть в форме имеется несколько переключателей.
Для того чтобы при нажатии каждый из них окрашивался в свой цвет, нужно в
Инспекторе объектов присвоить свойству Tag значения от 0 до 7 и для каждого
связать событие onclick с методом CheckBoxClick. Этот единственный метод
справится с задачей для всех переключателей.
Инкапсуляция
В предыдущих разделах мы ввели ряд новых
понятий, которыми будем пользоваться в дальнейшем. Теперь поговорим о
принципах, составляющих суть объектно-ориентированного программирования. Таких
принципов три — инкапсуляция, наследование и полиморфизм.
Как правило, объект — это сложная
конструкция, свойства и поведение составных частей которой находятся во
взаимодействии. К примеру, если мы моделируем взлетающий самолет, то после
набора им определенной скорости и отрыва от земли принципы управления им
полностью изменяются. Поэтому в объекте "самолет" явно недостаточно
просто увеличить значение поля "скорость" на несколько километров в
час — такое изменение должно автоматически повлечь за собой целый ряд других.
При создании программных объектов подобные
ситуации можно моделировать, связывая со свойствами необходимые методы. Понятие
инкапсуляции соответствует этому механизму.
Классическое правило
объектно-ориентированного программирования утверждает, что для обеспечения надежности
нежелателен прямой доступ к полям объекта: чтение и обновление их содержимого
должно производиться посредством вызова соответствующих методов. Это правило и
называется инкапсуляцией. В старых реализациях ООП (например, в Turbo Pascal)
эта мысль внедрялась только посредством призывов и примеров в документации; в
языке же Object Pascal есть соответствующая конструкция. В Delphi пользователь
вашего объекта может быть полностью отгорожен от полей при помощи свойств (см.
выше).
Примечание
Дополнительные возможности ограничения
доступа к нужным данным обеспечивают области видимости (см. ниже).
Наследование
Вторым "столпом" ООП является
наследование. Этот простой принцип означает, что если вы хотите создать новый
класс, лишь немного отличающийся от старого, то совершенно нет необходимости в
переписывании заново уже существующих полей и методов. Вы объявляете, что новый
класс TNewObject
TNewObject = class(TOldObject);
является потомком или дочерним классом
старого класса TOldObject, называемого предком или родительским классом, и
добавляете к нему новые поля, методы и свойства — иными словами, то, что нужно
при переходе от общего к частному.
Примечание
Прекрасный пример, иллюстрирующий
наследование, представляет собой иерархия классов VCL.
В Object Pascal все классы являются
потомками класса TObject. Поэтому, если вы создаете дочерний класс прямо от
TObject, то в определении его можно не упоминать. Следующие два выражения
одинаково верны:
TMyObject = class(TObject); TMyObject =
class;
Первый вариант, хотя он и более длинный,
предпочтительнее — для устранения возможных неоднозначностей. Класс TObject
несет очень серьезную нагрузку и будет рассмотрен отдельно.
Унаследованные от класса-предка поля и
методы доступны в дочернем классе; если имеет место совпадение имен методов, то
говорят, что они перекрываются.
Поведение методов при наследовании, без
преувеличения, является краеугольным камнем объектно-ориентированного программирования.
В зависимости от того, какие действия происходят при вызове, методы делятся на
три группы. В первую группу отнесем статические методы, во вторую — виртуальные
(virtual) и динамические (dynamic) и, наконец, в третью — появившиеся только в Delphi
4 — перегружаемые (overload) методы.
Методы первой группы полностью
перекрываются в классах-потомках при их переопределении. При этом можно
полностью изменить объявление метода. Методы второй группы при наследовании
должны сохранять наименование и тип. Перегружаемые методы дополняют механизм
наследования возможностью использовать нужный вариант метода (собственный или
родительский) в зависимости от условий применения. Подробно все эти методы
обсуждаются ниже.
Язык C++ допускает так называемое множественное
наследование. В этом случае новый класс может наследовать часть своих элементов
от одного родительского класса, а часть — от другого. Это, наряду с удобствами,
зачастую приводит к проблемам. В Object Pascal понятие множественного
наследования отсутствует. Если вы хотите, чтобы новый класс объединял свойства
нескольких, породите классы-предки один от другого или включите в один класс
несколько полей, соответствующих другим желаемым классам.
Полиморфизм
Рассмотрим внимательно следующий пример.
Пусть у нас имеются некое обобщенное поле для хранения данных — класс TField и
три его потомка — для хранения строк, целых и вещественных чисел:
type
TField = class
function
GetData:string; virtual; abstract;
end;
TStringFieid =
class(TField)
FData : string;
function GetData:
string; override;
end;
TIntegerField =
class(TField)
FData : Integer;
function GetData:
string;override;
end;
TExtendedField =
class(TField)
FData : Extended;
function GetData:
string;override;
end;
function
TStringFieid.GetData;
 begin
Result := FData
end;
function
TIntegerField.GetData;
begin
Result :=
IntToStr(FData);
end;
function
TExtendedField.GetData;
begin
Result:=
FloatToStrF(FData, ffFixed, 7, 2);
end ;
procedure
ShowData(AField : TField);
 begin
Forml.Label!.Caption
:= AField.GetData;
end;
В этом примере классы содержат разнотипные
поля данных FData и только-то и "умеют", что сообщить о значении этих
данных текстовой строкой (при помощи метода GetData). Внешняя по отношению к
ним процедура ShowData получает объект в виде параметра и показывает эту
строку.
Правила контроля соответствия типов
(typecasting) языка Object Pascal гласят, что объекту как указателю на
экземпляр объектного типа может быть присвоен адрес любого экземпляра любого из
дочерних типов. В процедуре showData параметр описан как TFieid — это значит,
что в нее можно передавать объекты классов и TStringField,и TIntegerField, и
TExtendedField,и любого другого потомка класса TField.
Но какой (точнее, чей) метод GetData при
этом будет вызван? Тот, который соответствует классу фактически переданного
объекта. Этот принцип называется полиморфизмом, и он, пожалуй, представляет
собой наиболее важный козырь ООП.
Допустим, вы имеете дело с некоторой
совокупностью явлений или процессов. Чтобы смоделировать их средствами ООП,
нужно выделить их самые общие, типовые черты. Те из них, которые не изменяют
своего содержания, должны быть реализованы в виде статических методов. Те же,
которые изменяются при переходе от общего к частному, лучше облечь в форму
виртуальных методов.
Основные, "родовые" черты
(методы) нужно описать в классе-предке и затем перекрывать их в классах-потомках.
В нашем примере программисту, пишущему процедуру вроде showData, важно лишь,
что любой объект, переданный в нее, является потомком TFieid и он умеет
сообщить о значении своих данных (выполнив метод GetData). Если, к примеру,
такую процедуру скомпилировать и поместить в динамическую библиотеку, то эту
библиотеку можно будет раз и навсегда использовать без изменений, хотя будут
появляться и новые, неизвестные в момент ее создания классы-потомки TFieid.
Наглядный пример использования
полиморфизма дает среда Delphi. В ней имеется класс TComponent, на уровне
которого сосредоточены определенные "правила" взаимодействия
компонентов со средой разработки и с другими компонентами. Следуя этим
правилам, можно порождать от класса TComponent свои компоненты, настраивая
Delphi на решение специальных задач.
Теперь, надеемся, стало более или менее
ясно, какие преимущества ООП позволили ему стать основным способом разработки
серьезного программного обеспечения. Те, кто начинал программировать еще для
Windows 3.0, наверняка помнят, сколько усилий требовалось при написании
совершенно тривиального кода. Сейчас для того же самого в Delphi достаточно
буквально пары щелчков мышью. На самом деле именно сложность программирования
для Windows стала катализатором внедрения ООП.
Методы
Из предыдущего материала читатели узнали,
что функционирование объектов обеспечивается различными типами методов, которые
различаются особенностями реализации механизма наследования. Теперь настало
время рассмотреть эти методы более подробно.
Абстрактными называются методы, которые
определены в классе, но не содержат никаких действий, никогда не вызываются и
обязательно должны быть переопределены в потомках класса. Абстрактными могут
быть только виртуальные и динамические методы. В Object Pascal такие методы
объявляются с помощью одноименной директивы. Она указывается при описании
метода:
procedure NeverCallMe; virtual; abstract;
При этом никакого кода для этого метода
писать не нужно. Вызов метода NeverCallMe приведет к созданию исключительной
ситуации EAbstractError (исключительным ситуациям посвящена гл. 4).
Пример с классом TField из разд.
"Полиморфизм" этой главы поясняет, для чего нужно использование
абстрактных методов. В данном случае класс TField не используется сам по себе;
его основное предназначение — быть родоначальником иерархии конкретных классов
-"полей" и дать возможность абстрагироваться от частностей. Хотя
параметр процедуры showData и описан как TField, но, если передать в нее объект
этого класса, произойдет исключительная ситуация вызова абстрактного метода.
Статические методы, а также любые поля в
объектах-потомках ведут себя одинаково: вы можете без ограничений перекрывать
старые имена и при этом изменять тип методов. Код нового статического метода
полностью перекрывает (заменяет собой) код старого метода:
type
TlstObj = class
i : Extended;
procedure
SetData(AValue: Extended);
end;
 T2ndObj =
class (TlstObj)
i : Integer;
procedure
SetData(AValue: Integer);
end;
procedure
TlstObj.SetData;
begin
i := 1.0;
end;
procedure
T2ndObj.SetData;
begin
i := 1;
inherited SetData (0.99);
end;
В этом примере разные методы с именем
SetData присваивают значения разным полям с именем i. Перекрытое (одноименное)
поле предка недоступно в потомке; поэтому, конечно, два одноименных поля с
именем i — это нонсенс; так сделано только для примера.
Примечание
В практике программирования принято
присваивать всем идентификаторам в программе (в том числе полям объектов)
осмысленные названия. Это существенно облегчит работу с исходным кодом не
только другим разработчикам, но и вам.
В отличие от поля, внутри других методов
перекрытый метод доступен при указании зарезервированного слова inherited. По
умолчанию все методы объектов являются статическими — их адрес определяется еще
на стадии компиляции проекта, поэтому они вызываются быстрее всего. Может быть,
читателю еще не ясно, для чего упоминается этот факт. Просто запомните его, он
понадобится при сравнении статических и виртуальных методов.
Принципиально отличаются от статических
виртуальные и динамические методы. Они должны быть объявлены путем добавления
соответствующей директивы virtual или dynamic. Обе эти категории существовали и
в прежних версиях языка Pascal. С точки зрения наследования методы этих двух
видов одинаковы: они могут быть перекрыты в дочернем классе только одноименными
методами, имеющими тот же тип.
Если задуматься над рассмотренным выше
примером, становится ясно, что у компилятора нет возможности определить класс
объекта, фактически переданного в процедуру showData. Нужен механизм,
позволяющий определить это прямо во время выполнения. Такой механизм называется
поздним связыванием (late binding).
Естественно, что этот механизм должен быть
каким-то образом связан с передаваемым объектом. Для этого используются таблица
виртуальных методов (Virtual Method Table, VMT) и таблица динамических методов
(Dynamic Method Table, DMT).
Разница между виртуальными и динамическими
методами заключается в особенности поиска адреса. Когда компилятор встречает
обращение к виртуальному методу, он подставляет вместо прямого вызова по
конкретному адресу код, который обращается к VMT и извлекает оттуда нужный
адрес.
Такая таблица есть для каждого класса
(объектного типа). В ней хранятся адреса всех виртуальных методов класса,
независимо от того, унаследованы ли они от предка или перекрыты в данном
классе. Отсюда и достоинства, и недостатки виртуальных методов: они вызываются
сравнительно быстро, однако для хранения указателей на них в таблице VMT
требуется большое количество памяти.
Динамические методы вызываются медленнее,
но позволяют более экономно расходовать память. Каждому динамическому методу
системой присваивается уникальный индекс. В таблице динамических методов класса
хранятся индексы и адреса только тех динамических методов, которые описаны в
данном классе. При вызове динамического метода происходит поиск в этой таблице;
в случае неудачи просматриваются таблицы DMT всех классов-предков в порядке
иерархии и, наконец, класс TObject, где имеется стандартный обработчик вызова динамических
методов. Экономия памяти налицо.
Для перекрытия и виртуальных, и
динамических методов служит директива override, с помощью которой (и только с
ней!) можно переопределять оба этих типа методов. Приведем пример:
type
TFirstClass =
class
FMyFieldl:
Integer;
 FMyField2:
Longint;
 procedure
StatMethod;
procedure
VirtMethodl; virtual;
procedure
VirtMethod2; virtual;
 procedure
DynaMethodl; dynamic;
 procedure
DynaMethod2; dynamic;
end;
TSecondClass =
class(TMyObject)
procedure StatMethod;

procedure
VirtMethodl; override;
procedure
DynaMethodl; override;
  end;
var
Objl: TFirstClass;

Obj2:
TSecondClass;
Первый из методов в примере создается
заново, остальные два — перекрываются. Попытка применить директиву override к
статическому методу вызовет ошибку компиляции.
 Примечание
Будьте внимательны: попытка перекрытия с
директивой не override, a virtual или dynamic приведет на самом деле к созданию
нового одноименного метода.
Перегрузка методов

Есть еще одна, совершенно особенная
разновидность методов — перегружаемые.
Эту категорию методов нельзя назвать
антагонистом двух предыдущих: и статические, и виртуальные, и динамические
методы могут быть перегружаемыми. Перегрузка методов нужна, чтобы произвести
одинаковые или похожие действия с разнотипными данными.
Рассмотрим немного измененный пример,
иллюстрирующий статические методы:
type
TlstObj = class
FExtData :
Extended;
procedure
SetData(AValue: Extended);
end; T2ndObj =
class(TlstObj)
FIntData :
Integer;
procedure
SetData(AValue: Integer); end;
var  Tl:
TlstObj;
T2 : T2ndObj;
В этом случае попытка вызова из объекта Т2
методов
...
Т2.SetData (1.0);
Т2.SetData(1);
...
вызовет ошибку компиляции на первой из
двух строк. Для компилятора внутри Т2 статический метод с параметром типа
extended перекрыт, и он его "не признает". Где же выход из
сложившегося положения? Переименовать один из методов, например создать
SetlntegerData и SetExtendedData? Можно, но если методов не два, а, скажем,
сто, моментально возникнет путаница. Сделать методы виртуальными? Нельзя, поскольку
тип и количество параметров в одноименных виртуальных методах должны в точности
совпадать. Теперь для этого существуют перегружаемые методы, объявляемые при
помощи директивы overload:
type
TlstObj = class
FExtData :
Extended;
procedure SetData(AValue:
Extended);overload;
end;
T2ndObj =
class(TlstObj)
FIntData :
Integer;
procedure
SetData(AValue: Integer); overload;
end;
Объявив метод SetData перегружаемым, в
программе можно использовать обе его реализации одновременно. Это возможно
потому, что компилятор определяет тип передаваемого параметра (целый или с
плавающей точкой) и в зависимости от этого подставит вызов соответствующего
метода: для целочисленных данных — метод объекта T2ndobj, для данных с
плавающей точкой — метод объекта Listobj.
Можно перегрузить и виртуальный
(динамический) метод. Надо только в этом случае добавить директиву reintroduce:

type
TlstObj = class
FExtData : Extended;

procedure
SetData(AValue: Extended); overload; virtual;
end;
T2ndObj =
class(TlstObj)
FIntData :
Integer;
procedure
SetData(AValue: Integer); reintroduce; overload;
end;
На перегрузку методов накладывается
ограничение — нельзя перегружать методы, находящиеся в области видимости
published, т. е. те, которые будут использоваться в Инспекторе объектов.
Области видимости
При описании нового класса важен разумный
компромисс. С одной стороны, требуется скрыть от других методы и поля,
представляющие собой внутреннее устройство класса (для этого и придуманы
свойства). Маловажные детали на уровне пользователя объекта будут бесполезны и
только помешают целостности восприятия.
С другой стороны, если слишком ограничить
того, кто будет порождать классы-потомки, и не обеспечить ему достаточный набор
инструментальных средств и свободу маневра, то он и не станет использовать ваш
класс.
В модели объектов языка Object Pascal
существует механизм доступа к составным частям объекта, определяющий области,
где ими можно пользоваться (области видимости). Поля и методы могут относиться
к четырем группам (секциям), отличающимся областями видимости. Методы и
свойства могут быть общими (секция public), личными (секция private),
защищенными (секция protected) и опубликованными (секция published). Есть еще и
пятая группа, automated, она ранее использовалась для создания объектов СОМ;
теперь она присутствует в языке только для обратной совместимости с программами
на Delphi версий 3—5.
Области видимости, определяемые первыми тремя
директивами, таковы.
·
 Поля,
свойства и методы секции public не имеют ограничений на видимость. Они доступны
из других функций и методов объектов как в данном модуле, так и во всех прочих,
ссылающихся на него.
·
 Поля,
свойства и методы, находящиеся в секции private, доступны только в методах
класса и в функциях, содержащихся в том же модуле, что и описываемый класс.
Такая директива позволяет полностью скрыть детали внутренней реализации класса.
Свойства и методы из секции private можно изменять, и это не будет сказываться
на программах, работающих с объектами этого класса. Единственный способ для
кого-то другого обратиться к ним — переписать заново созданный вами модуль
(если, конечно, доступны исходные тексты).
·
 Поля,
свойства и методы секции protected также доступны только внутри модуля с
описываемым классом. Но — и это главное — они доступны в классах, являющихся
потомками данного класса, в том числе и в других модулях. Такие элементы
особенно необходимы для разработчиков новых компонентов — потомков уже
существующих. Оставляя свободу модернизации класса, они все же скрывают детали
реализации от того, кто только пользуется объектами этого класса.
Рассмотрим пример, иллюстрирующий три
варианта областей видимости.
Листинг 1.1. Пример задания
областей видимости методов
unit
First;
|  unit Second;
interface
|  interface

|   uses
First;

type
|   type
TFirstObj =
class       |  TSecondObj =class(TFirstObj}
private
|  procedure Method4;
procedure
Methodl;      |  end;
protected
|
procedure
Method2;      |
public
|
procedure
Methods;      |
end;
|
procedure
TestProcl;    |  procedure TestProc2;
implementation
|  implementation
uses
dialogs;           |
varAFirstObj :TFirstObj;
var AFirstObj:
TFirstObj;|ASecondObj: TSecondObj;
procedure TestProcl;
|  procedure TSecondObj.Method4;
begin
|  begin
AFirstCbj :=
TFirstObj.Create; | Methodl; {недопустимо -
AFirstObj.Methodl;(допустимо)|

|произойдет ошибка компиляции}
AFirstObj.Method2;
{допустимо}|
Method2; {допустимо}
AFirstObj.MethodS;
{допустимо}|
Methods,- {допустимо}
AFirstObj.Free;
| end;
end;

| procedure TestProc2;
procedure
TFirstObj.Methodl;  | begin
begin
|AFirstObj:=TFirstObj.Create;
ShowMessage('1');
|AFirstObj.Methodl;{недопустимо}
end;
|AFirstObj.Method2;{недопустимо}
procedure
TFirstObj.Method2;

|AFirstObj.Method3;{допустимо}
begin
|AFirstObj.Free;
ShowMessage('2');
Methodl;
|ASecondCbj:= TSecondObj.Create;
end;
|ASecondObj.Methodl;{недопустимо}
procedureTFirstObj.Method3;

|ASecondObj.Method2;{допустимо}
begin
|ASecondObj.MethodS;{допустимо}
ShowMessage('3');
|ASecondObj.Free;
Method2;
| end;
end;
|end.
end.
|
Если к этому примеру добавить модуль Third
и попробовать вызвать методы классов TFirstObj и TSecondObj оттуда, то к числу
недоступных будет отнесен и Method2 — он доступен только в том модуле, в
котором описан.
Наконец, область видимости, определяемая
четвертой директивой — published, имеет особое значение для интерфейса
визуального проектирования Delphi. В этой секции должны быть собраны те
свойства объекта, которые будут видны не только во время исполнения приложения,
но и из среды разработки. Публиковать можно свойства большинства типов, за
исключением старого типа real (теперь он называется rеаl48), свойств типа
"массив" и некоторых других. Все свойства компонентов, доступные
через
Инспектор объектов, являются их
опубликованными свойствами. Во время выполнения такие свойства общедоступны,
как и public.
Три области видимости — private, protected,
public — как бы упорядочены по возрастанию видимости методов. В
классах-потомках можно повысить видимость методов и свойств, но не понизить ее.
При описании дочернего класса можно переносить методы и свойства из одной сферы
видимости в другую, не переписывая их заново и даже не описывая — достаточно
упомянуть о нем в другом месте:
type
TFirstObj =
class
private
FNumber:
Integer;
protected
property Number:
Integer read: FNumber;
 end;
...
TSecondObj =
class(TFirstObj)
published
property
Number;
end;
Если какое-либо свойство объекта из
состава VCL принадлежит к области public, вернуть его в private невозможно.
Напротив, обратная процедура широко практикуется в Delphi. У многих компонентов
(например, TEdit) есть предок (в данном случае TCustomEdit), который отличается
только отсутствием опубликованных свойств. Так что, если вы хотите создать
новый редактирующий компонент, порождайте его на базе TCustomEdit и публикуйте
только те свойства, которые считаете нужными. Разумеется, если вы поместили
свойство в область private, "достать" его оттуда в потомках
возможности уже нет.
Объект изнутри
Теперь, когда мы разобрались с основными
определениями и механизмами ООП, настало время более подробно изучить, что
представляет собой объект и как он работает. Ясно, что каждый экземпляр класса
содержит отдельную копию всех его полей. Ясно, что где-то в его недрах есть
указатели на таблицу виртуальных методов и таблицу динамических методов. А что
еще там имеется? И как происходит вызов методов? Вернемся к примеру из разд.
"Полиморфизм" данной главы:
type
TFirstClass = class
FMyFieldl:
Integer;
 FMyField2:
Longint;
procedure
StatMethod;
 procedure
VirtMethodl; virtual;
procedure
VirtMethod2; virtual;
procedure
DynaMethodl; dynamic;
 procedure
DynaMethod2; dynamic;
end;
TSecondClass =
class(TMyObject)
procedure
StatMethod;
procedure
VirtMethodl;
 override;
procedure DynaMethodl;
override; end;
Objl:
TFirstClass;
Obj2:
TSecondClass;
На рис. 1.1 показано, как будет выглядеть
внутренняя структура рассмотренных в нем объектов.
Первое поле каждого экземпляра того или
иного объекта содержит указатель на его класс. Класс как структура состоит из
двух частей. Начиная с адреса, на который ссылается указатель на класс,
располагается таблица виртуальных методов. Напомним, что она содержит адреса
всех виртуальных методов класса, включая унаследованные от предков. Длина
таблиц VMT объектов Оbj1 и Obj2 одинакова— по два элемента (8 байт). Перед
таблицей виртуальных методов расположена специальная структура, содержащая
дополнительную служебную информацию. В ней содержатся данные, полностью
характеризующие класс: его имя, размер экземпляра, указатели на класс-предок,
имя класса и т. д. На рис. 1.1 она показана одним блоком, а ее содержимое
расшифровано ниже.
Одно из полей структуры содержит адрес
таблицы динамических методов класса (DMT). Таблица имеет следующий формат — в
начале слово, содержащее количество элементов таблицы; затем — слова,
соответствующие индексам методов. Нумерация индексов начинается с —1 и идет по
убывающей. После индексов идут собственно адреса динамических методов. Обратите
внимание, что DMT объекта Оbj1 состоит из двух элементов, Obj2 — из одного,
соответствующего перекрытому методу DynaMethodl. В случае вызова
Qbj2.DynaMethod2 индекс не будет найден в таблице DMT Obj2, и произойдет
обращение к DMT Оbj1. Именно так экономится память при использовании динамических
методов.
В языке Object Pascal определены два
оператора — is и as, неявно обращающиеся к таблице динамических методов.
Оператор is предназначен для проверки совместимости по присваиванию экземпляра
объекта с заданным классом.
Рис. 1.1. Внутренняя
структура объектов Objl и Obj2
Выражение вида:
AnObject is TObjectType
принимает значение True, только если
объект AnObject совместим по присваиванию с классом TObjectType, т. е. является
объектом этого класса или одного из классов, порожденных от него. Кстати,
определенная проверка происходит еще при компиляции: если формально объект и
класс несовместимы, то компилятор выдаст ошибку в этом операторе.
Оператор as введен в язык специально для
приведения объектных типов. С его помощью можно рассматривать экземпляр объекта
как принадлежащий к другому совместимому типу:
with ASomeObject
as TAnotherType do...
От стандартного способа приведения типов с
помощью конструкции TAnotherType (ASomeObject) использование оператора as
отличается наличием проверки на совместимость типов во время выполнения (как в
операторе is): попытка приведения к несовместимому типу приводит к
возникновению исключительной ситуации EinvalidCast (см. гл. 4). После
применения оператора as сам объект остается неизменным, но вызываются те его
методы, которые соответствуют присваиваемому классу.
Очень полезным может быть оператор as в
методах-обработчиках событий. Для обеспечения совместимости в 99% случаев источник
события sender имеет тип TObject, хотя в тех же 99% случаев им является форма
или другие компоненты. Поэтому, чтобы иметь возможность пользоваться их
свойствами, применяют оператор аs:
(Sender as
TControl).Caption := "Thanks!";
Вся информация, описывающая класс,
создается и размещается в памяти на этапе компиляции. Возникает резонный
вопрос: а нельзя ли получить доступ к ней, не создавая экземпляр объекта? Да,
можно. Доступ к информации класса вне методов этого класса можно получить,
описав соответствующий указатель, который называется указателем на класс, или
указателем на объектный тип (class reference). Он описывается при помощи
зарезервированных слов class of. Например, указатель на класс TObject описан в
модуле SYSTEM.PAS и называется Tclass:
type
TObject = class;
TClass = class of
TObject;
Аналогичные указатели уже описаны и для
других важных классов. Вы можете использовать в своей программе
TComponentClass, TControlClass и т. п.
Указатели на классы тоже подчиняются
правилам приведения объектных типов. Указатель на класс-предок может ссылаться
и на любые дочерние классы; обратное невозможно:
type
TFirst = class
..
end;
TSecond =
class(TFirst)
...
end;
TFirstClass =
class of TFirst;
TSecondClass =
class of TSecond;
var
AFirst :
TFirstClass;
ASecond :
TSecondClass;
begin
AFirst := TSecond;
{допустимо}
ASecond := TFirst; {недопустимо}
end.
С указателем на класс тесно связано
понятие методов класса. Такие методы можно вызывать без создания экземпляра
объекта — с указанием имени класса, в котором они описаны. Перед описанием
метода класса нужно поставить зарезервированное слово class:
type
TMyObject = class(TObject)
class function
GetSize: string;
end;
var
MyObj ect: TMyObj
ect;
AString: string;
 begin
AString :=
TMyObject.GetSize;
MyObject :=
TMyObject.Create;
AString :=
MyObject.GetSize;
end.
Разумеется, методы класса не могут использовать
значения, содержащиеся в полях класса: ведь экземпляра-то не существует.
Возникает вопрос: для чего нужны такие методы?
Важнейшие методы класса определены в самом
TObject: они как раз и позволяют, не углубляясь во внутреннюю структуру класса,
извлечь оттуда практически всю необходимую информацию.
Резюме
В этой главе рассмотрены основы
объектно-ориентированного программирования в Delphi. Объект обладает свойствами
и методами, которые позволяют изменять значения свойств. Знание основ ООП необходимо
для изучения всех глав не только этой части, но и всех последующих. Ведь
компоненты Delphi — это объекты, размешенные в специальной библиотеке VCL. А ни
одна глава этой книги не обходится без описания возможностей тех или иных
компонентов.
Рассмотренные в данной главе возможности
объектов используются при создании исходного кода приложений Delphi.

Скачано с
www.znanio.ru

file_name: ООП лекция 41-42.docx

alt: Объект и класс Поля, свойства и методы

alt: Аналогично, метод, помещающий значения в такое свойство, должен первым параметром иметь индекс, а вторым — переменную нужного типа (которая может быть передана как по ссылке,…

alt: Integer; procedure SetData(AValue:

alt: TlstObj = class FExtData :

alt: Если к этому примеру добавить модуль

title: Лекция по теме "Объектно-ориентированное программирование"


extracted_text:
Технологическая
карта конструирования урока с использованием средств
информационно-коммуникационных технологий

Предмет, класс Дата

Английский язык, 7-й класс
  31.01

Тема урока
Место урока в системе по
  данной теме

“Парки развлечений. Леголенд. ”
УМК “Spotlight – 7” авторы: Ваулина Ю...; Дули Д..

Тип урока

Комбинированный

Цель урока

Закрепление
  навыков вопросно-ответной работы.

Задачи
  урока

обучающие

развивающие

воспитательные

1. Активизировать лексику 2. Провести практику
  диалогической и монологической речи в процессе общения учащихся друг с другом
  на основе материала изучаемой темы.            3. Тренировать учащихся
  в устной речи.

1. Развивать навыки работы
  в паре, в группах, навыки говорения (ведение диалога и монолога)

 2. Развивать умение
  применять полученные знания в конкретной ситуации

1. Формировать
  познавательный интерес к культуре и истории страны изучаемого языка
2. Воспитать культуру общения

Планируемый результат

Предметные умения

УУД

Формирование языковых
       навыков фонетических, орфографических, лексических) в рамках темы
Вести диалог по теме,
       соблюдая нормы речевого этикета (базовый уровень)
Читать аутентичные тексты
       с выборочным пониманием значимой информации (базовый уровень)
Развитие навыков
       аудирования, чтения, в рамках предложенной темы
Формирование
       социокультурной осведомлённости

Личностные: формирование ответственного отношения к учению,
  готовности к саморазвитию и самообразованию, формирование коммуникативной
  компетенции в общении и сотрудничестве со сверстниками, формирование и
  развитие интереса к иностранному языку.
Регулятивные: осуществление регулятивных действий
  самонаблюдения, самоконтроля, самооценки в процессе коммуникативной
  деятельности на иностранном языке.
Познавательные: построение логических рассуждений, включающее
  установление причинно-следственных связей; освоение ознакомительного чтения
Коммуникативные: формулировка собственного мнения и позиции,
  способность аргументировать и координировать ее с позициями партнеров  в
  сотрудничестве при выработке общего решения в совместной деятельности; умение
  задавать вопросы  и отвечать на них; адекватно использовать речевые средства
  для решения различных коммуникативных задач.

Организационная структура урока

Этап урока

Деятельность учителя

Деятельность учащихся

I.Организационно-мотивационный
  момент.
Warming up

Приветствую учащихся.

 Объявляю тему урока

Отвечают на приветствие.
Слушают и настраиваются на работу на уроке.

II.
  Актуализация знаний учащихся.
Цель: записать новые
  слова.

 Предлагает записать новые
  слова.                                      Предлагает посмотреть упр.1,2
  стр.61 и ответить на вопросы.

Записывают новые слова
  Повторяют за учителем слова.

Выполняют задание. И
  отвечают на вопросы учителя.
  на стр.61.

III.Грамматика.
Цель: развитие лексических
  навыков.

  Физкультминутка.

Объясняет грамматический материал.Словообразования
Предлагает выполнить упр.5 стр.61
Предлагает учащимся отдохнуть.I see you tired t, don’t you? Let’s have a rest.

Слушают объяснение грамматического
  материала.
Приступают к выполнению задания..
Рассказывают рифмовку и выполняют движения.

IV.
  Чтение текста с полным пониманием и построение логически связного
  высказывания.
Цель:
  Развитие навыков чтения.

Предлагает прочитать текст
  и перевести. Упр.3 стр.61
Предлагает выполнить упр.4,
  стр.61.
Оценивает работу учащихся

Читают и переводят диалог..

Находят упр.3  на стр 61

V.
  Рефлексия.
Цель: Завершение урока.
Информация о домашнем
  задании.                      Подведение итогов и выставление оценок.

Просит учащихся ответить на
  вопросы.
So, boys and girls our lesson
  is coming to the end.
Сообщает
домашнее задание

Отвечают на вопросы.

Записывают домашнее задание.
 выучить диалог

Технологическая
карта конструирования урока с использованием средств
информационно-коммуникационных технологий

Предмет, класс Дата

Английский язык, 4-й класс

Тема урока
Место урока в системе по
  данной теме

“Знакомство с Present Progressive ” Step 4
УМК “Rainbow English – 4”
  авторы: Афанасьева О.В.; Михеева И.В.

Тип урока

Комбинированный

Форма
  урока

Лексика -диалог.

Цель урока

Закрепление
  навыков вопросно-ответной работы.

Задачи урока

обучающие

развивающие

воспитательные

1. Активизировать лексику по теме “ Present Continuous”                         2. Провести
  практику диалогической и монологической речи в процессе общения учащихся друг
  с другом на основе материала изучаемой темы.            3. Тренировать
  учащихся в устной речи.

1. Развивать навыки работы
  в паре, в группах, навыки говорения (ведение диалога и монолога)

 2. Развивать умение
  применять полученные знания в конкретной ситуации

1. Формировать
  познавательный интерес к культуре и истории страны изучаемого языка
2. Воспитать культуру общения

Виды
  использ на уроке средств ИКТ

Аудиозапись

Планируемый результат

Предметные умения

УУД

Формирование языковых
       навыков фонетических, орфографических, лексических) в рамках темы
Вести диалог по теме,
       соблюдая нормы речевого этикета (базовый уровень)
Читать аутентичные тексты
       с выборочным пониманием значимой информации (базовый уровень)
Развитие навыков
       аудирования, чтения, в рамках предложенной темы
Формирование
       социокультурной осведомлённости

Личностные: формирование ответственного отношения к учению,
  готовности к саморазвитию и самообразованию, формирование коммуникативной
  компетенции в общении и сотрудничестве со сверстниками, формирование и
  развитие интереса к иностранному языку.
Регулятивные: осуществление регулятивных действий
  самонаблюдения, самоконтроля, самооценки в процессе коммуникативной
  деятельности на иностранном языке.
Познавательные: построение логических рассуждений, включающее
  установление причинно-следственных связей; освоение ознакомительного чтения
Коммуникативные: формулировка собственного мнения и позиции,
  способность аргументировать и координировать ее с позициями партнеров  в
  сотрудничестве при выработке общего решения в совместной деятельности; умение
  задавать вопросы  и отвечать на них; адекватно использовать речевые средства
  для решения различных коммуникативных задач.

Организационная структура урока

Этап урока

Деятельность учителя

Деятельность учащихся

I.Организационно-мотивационный
  момент.
Warming up

Приветствую учащихся.

 Объявляю тему урока

Отвечают на приветствие.
Слушают и настраиваются на работу на уроке.

II.
  Актуализация знаний учащихся.
Цель: записать новые
  слова.

 Предлагает записать новые слова: to drink, to think, to work, to write,
  to feed, have breakfast, have lunch.                                      Предлагает составить предложения используя картинки
  упр.1, стр.43-44.

Записывают новые слова Повторяют
  за учителем слова.

Выполняют
  задание.
После выполняют упр.3,
  стр.44. работают в парах.

III.Грамматика.
Цель: развитие лексических
  навыков.

  Физкультминутка.

Объясняет грамматический материал.
Предлагает выполнить упр.5, стр.45 у доски.
Предлагает учащимся отдохнуть.I see you tired t, don’t you? Let’s
  have a rest.

Слушают объяснение грамматического материала.
Приступают к выполнению задания у доски.
Рассказывают рифмовку и выполняют движения.

IV.
  Чтение текста с полным пониманием и построение логически связного
  высказывания.
Цель:
  Развитие навыков чтения.

Предлагает  рассказать
  диалоги.
Предлагает прочитать предложения
  вставляя слова упр.7, стр.46.
Оценивает работу учащихся

Рассказывают диалоги.

Находят упр. 7 на стр.46

V.
  Рефлексия.
Цель: Завершение урока.
Информация о домашнем
  задании.                      Подведение итогов и выставление оценок.

Просит учащихся ответить на
  вопросы.
So, boys and girls our lesson
  is coming to the end.
Сообщает
домашнее задание

Отвечают на вопросы.

Записывают домашнее задание.
Упр.2-5, стр.12,13,14.

file_name: Парки развлечений..docx

alt: Организационная структура урока

title: Технологическая карта Английский язык, 7-й класс “Парки развлечений. Леголенд. ”


extracted_text:
Договор
купли-продажи жилого
помещения (квартиры)

[место заключения договора]

[число, месяц, год]

Гражданин РФ [Ф. И. О.], [значение] года рождения, (паспорт [серия, номер, кем и когда
выдан, код подразделения]),
зарегистрированный по адресу: [вписать нужное], именуемый в дальнейшем "Продавец", с одной стороны, и
Гражданин РФ [Ф. И. О.], [значение] года рождения, (паспорт [серия, номер, кем и когда
выдан, код подразделения]),
зарегистрированный по адресу: [вписать нужное], именуемый в дальнейшем "Покупатель", с другой стороны, а
вместе именуемые "Стороны", заключили настоящий договор о
нижеследующем:

1. Предмет
договора

1.1. Продавец продает, а Покупатель
приобретает в собственность жилое помещение, расположенное по адресу: [вписать
нужное] (далее - Квартира).
1.2. Указанная Квартира расположена на [значение] этаже [значение]-этажного жилого дома и состоит из [значение] комнат(ы), имеет общую площадь [цифрами
и прописью] кв.м., в том числе жилую - [значение] кв.м., и все виды благоустройства; кадастровый номер [значение] согласно техническому паспорту жилого
помещения (квартиры), выданному [наименование выдавшего органа] [дата выдачи].
1.3. Отчуждаемое по настоящему договору жилое
помещение принадлежит Продавцу на праве собственности на основании [документы,
устанавливающие наличие, возникновение, прекращение, переход, ограничение
(обременение) права, например, договор или свидетельство о праве на наследство] от [число, месяц, год] № [значение], что удостоверяется выпиской из ЕРГН от [число,
месяц, год].
1.4. Право собственности на указанную
Квартиру зарегистрировано в Едином государственном реестре недвижимости [число,
месяц, год], запись регистрации
N [значение].

2. Цена и порядок
расчетов

2.1. По согласованию Сторон цена продаваемой
Квартиры составляет [сумма цифрами и прописью] рублей.
2.2. Продавец деньги в сумме [сумма
цифрами и прописью] рублей получил от
Покупателя полностью до подписания настоящего договора, о чем имеется
нотариально удостоверенная расписка.
2.3. Расходы, связанные с оформлением и
регистрацией перехода права собственности, не включаются в стоимость Квартиры и
уплачиваются Сторонами по мере необходимости и своевременно.

3. Передача
жилого помещения и переход права собственности к покупателю

3.1. Передача Квартиры Продавцом и принятие
ее Покупателем осуществляется по передаточному акту, который является
неотъемлемой частью настоящего договора и подписывается вместе с подписанием
настоящего договора.
3.2. Подготовка жилого помещения к передаче
является обязанностью Продавца и осуществляется за его счет.
3.3. Переход права
собственности на Квартиру по настоящему договору к Покупателю подлежит
государственной регистрации.

4. Гарантии
состоятельности сделки

4.1. Риск случайной гибели или порчи жилого
помещения до момента, определенного в п. 3.3 настоящего договора лежит на
Продавце.
4.2. Продавец гарантирует, что указанная в
настоящем договоре Квартира никому не продана, не заложена, в споре, под
арестом и запретом не состоит, и свободна от законных прав третьих лиц.

5. Обязательства
сторон

5.1. Продавец обязуется:
5.1.1. Передать Покупателю в собственность
Квартиру, являющуюся предметом настоящего договора, свободную от любых
имущественных прав и претензий третьих лиц, в качественном состоянии - как она
есть на день подписания настоящего договора, в пригодном для проживания
состоянии, с имеющимся на момент подписания настоящего договора
санитарно-техническим, электро-, газо- и иным оборудованием, на основании
передаточного акта.
5.1.2. Предоставить Покупателю все
необходимые документы для государственной регистрации перехода права
собственности на жилое помещение.
5.1.3. Осуществить все необходимые действия и
нести все расходы, связанные с подготовкой Квартиры к продаже.
5.1.4. Сняться с регистрационного учета, а
также освободить проданную Квартиру в срок не позднее 14 (Четырнадцати)
календарных дней с момента государственной регистрации перехода права
собственности.
Совместно с Продавцом в Квартире проживают [Ф. И. О.,
год рождения], которые утрачивают
право пользования проданной квартирой в порядке ст. 292 ГК РФ с момента
государственной регистрации права собственности.
5.1.5. Принять произведенную Покупателем
оплату.
5.2. Покупатель обязан:
5.2.1. Оплатить квартиру в размере и порядке,
установленном настоящим договором;
5.2.2. Принять жилое помещение на условиях,
предусмотренных настоящим Договором.
5.2.3. Нести расходы, связанные с
государственной регистрацией перехода права собственности на Квартиру.

6. Заключительные
положения

6.1. Содержание статей Гражданского кодекса
РФ 161 (сделки, совершаемые в простой письменной форме), 209 (содержание права
собственности), 223 (момент возникновения права собственности у приобретателя
по договору), 256 (общая собственность супругов), 288 (собственность на жилое
помещение), 289 (квартира как объект права собственности), 292 (права членов
семьи собственников жилого помещения), 433 (момент заключения договора), 456
(обязанности продавца по передаче товара), 460 (обязанность продавца передать
товар свободным от прав третьих лиц), 549 (договор продажи недвижимости), 550
(форма договора продажи недвижимости), 551 (государственная регистрация
перехода права собственности на недвижимость), 556 (передача недвижимости), 557
(последствия передачи недвижимости ненадлежащего качества), также статьи 39
Жилищного кодекса РФ (содержание общего имущества в многоквартирном доме), а
также иные нормы права, регулирующие взаимоотношения по сделке, Сторонам
известны и понятны.
6.2. Настоящий договор содержит весь объем
соглашений между Сторонами в отношении предмета настоящего договора, отменяет и
делает недействительными все другие обязательства или представления, которые
могли бы быть приняты или сделаны Сторонами в устной или письменной форме, до
подписания настоящего договора.
6.3. Настоящим Стороны подтверждают, что они
не лишены и не ограничены в дееспособности, под опекой и попечительством не
состоят, не страдают заболеваниями, препятствующими осознать суть и последствия
настоящего Договора, а также у них отсутствуют обстоятельства, вынуждающие
заключать сделку на крайне невыгодных для себя условиях.
6.4. Настоящий договор составлен в трех
экземплярах, один из которых хранится в делах [наименование органа
регистрации прав] по адресу: [вписать нужное], а остальные выдаются Продавцу и Покупателю.
6.5. За неисполнение или ненадлежащее
исполнение настоящего договора виновная Сторона возмещает другой Стороне все
возникшие в результате этого убытки.
6.6. Во всем, что не предусмотрено настоящим
Договором, Стороны руководствуются действующим законодательством РФ.

7. Подписи сторон

Продавец [Ф. И. О.,
подпись]
Покупатель [Ф. И. О.,
подпись]

Приложение
к договору купли-продажи
жилого помещения (квартиры)

Передаточный акт по договору
купли-продажи жилого помещения (квартиры)

[место подписания]

[число, месяц, год]

Гражданин РФ [Ф. И. О.], [значение] года рождения, (паспорт [серия, номер, кем и когда
выдан, код подразделения]),
зарегистрированный по адресу: [вписать нужное], именуемый в дальнейшем "Продавец", с одной стороны, и
Гражданин РФ [Ф. И. О.], [значение]
года рождения, (паспорт [серия, номер, кем и когда выдан, код
подразделения]), зарегистрированный по
адресу: [вписать нужное], именуемый в дальнейшем "Покупатель", с другой стороны, а
вместе именуемые "Стороны", подписали настоящий Акт о нижеследующем:
1. Продавец передает, а Покупатель на
основании договора купли-продажи квартиры от [число, месяц,
год] принимает в собственность жилое
помещение - [значение]-комнатную квартиру, свободную от имущественных прав и претензий
третьих лиц, общей площадью [значение] кв.м., в том числе жилой - [значение] кв.м. расположенную на [значение] этаже [значение]-этажного жилого дома по адресу: [вписать нужное], инвентарный номер [значение], свободную от любых прав третьих лиц,
являющуюся предметом Договора купли-продажи жилого помещения (квартиры).
2. Окончательный расчет между Сторонами за
передаваемую квартиру полностью произведен.
3. Покупатель принимает указанную квартиру в
собственность, в качественном состоянии - как она есть на день подписания
настоящего акта и договора купли-продажи, и распоряжается ею после
государственной регистрации перехода права собственности к нему по своему
усмотрению.
4. Квартира, передаваемая по настоящему акту,
находится в удовлетворительном техническом состоянии, претензий по техническому
и санитарному состоянию Квартиры Покупатель не имеет. Квартира по техническому
состоянию отвечает проектным условиям, соответствует санитарным и техническим
требованиям.
Стороны установили, что видимые недостатки
Квартиры не являются основанием для расторжения договора купли-продажи.
5. Одновременно с передачей Квартиры продавец
передает Покупателю технический паспорт и другую относящуюся к Квартире
документацию, а также документы, подтверждающие отсутствие задолженности по
оплате расходов за содержание отчуждаемого помещения и общего имущества в
многоквартирном доме, налоговых платежей, [иное].
6. При изъятии Квартиры у Покупателя третьими
лицами по основаниям, возникшим до заключения договора купли-продажи, Продавец
возмещает Покупателю причиненный ущерб.
7. Риск случайной гибели или случайного
повреждения жилого помещения переходит на Покупателя с момента государственной
регистрации перехода права собственности на Квартиру.
8. В соответствии со ст. 210 ГК РФ на
собственника возлагается бремя содержания принадлежащего ему имущества.
9. С момента подписания настоящего акта
указанная Квартира переходит Покупателю, обязанность Продавца по передаче
Квартиры считается исполненной.
10. Настоящий Акт составлен в трёх
экземплярах, один из которых находится у Продавца, другой - у Покупателя,
третий - в делах [наименование органа регистрации прав].
11. Подписи сторон:

Продавец [Ф. И. О.,
подпись]
Покупатель [Ф. И. О.,
подпись]

Скачано с www.znanio.ru

alt: Договор купли-продажи жилого помещения (квартиры) [ место заключения договора ] [ число, месяц, год ]

alt: Содержание статей Гражданского кодекса

alt: Ф. И. О. ] , [ значение ] года рождения, (паспорт [ серия, номер, кем и когда выдан, код подразделения ] ), зарегистрированный по адресу:…

intro: Методы и приемы развития экспериментальных навыков на уроках биологии животных включают практические занятия, включая вскрытие, сбор данных, наблюдение и анализ. Эти методы направлены на улучшение понимания учащимися биологии животных посредством практического опыта, содействия научным исследованиям и критическому мышлению.

биология

group: Дисциплины

title: Методы и приёмы формирования экспериментальных умений на уроках биологии животных.


extracted_text:
Конспект театрально- интегрированного
занятия в старшей группе по мотиву сказки «Заюшкина избушка»
Цель: развивать познавательный
интерес, интеллектуальную активность, связною речь.
Задачи:
-Развивать
мыслительные операции, воображение, внимание, память.
-Формировать
умение детей вести диалог со взрослым, слышать и понимать заданный вопрос,
понятно отвечать на него.
-Продолжать
развивать речевую активность, делать простые умозаключения.
-Закреплять
умение отгадывать загадки.
-Закреплять
умение выделять первый звук в слове и находить соответствующую букву.
-Упражнять
в порядковом и количественном счете.
-Формировать
знания об окружающем мире и свойствах предметов, проводя элементарные опыты.
-
Прививать
интерес к художественной литературе.
-Продолжать
воспитывать отзывчивость у детей, учить сопереживать и понимать героев сказки.
Оборудование:
картинки
героев сказки; ширма; куклы бибабо (заяц, лиса, медведь, собака, петух);
плоскостные домики героев(пронумерованные); магнитная доска; деревянные детали
для дома лисы (на магнитах); магнитные буквы и цифры.

Ход занятия
Воспитатель: раз, два, три,
четыре, пять, жду детей к себе играть! (Дети заходят в группу)
-
Дети, сегодня к нам пришли гости. Давайте поздороваемся с ними. (Дети
здороваются).
-Я
вас приглашаю на наш сказочный ковер в кружок. Давайте скажем друг другу
добрые слова:
«Собрались
все дети в круг
- Ты
мой друг и я твой друг.
Вместе
за руки возьмемся.
И
друг другу улыбнемся.
Мы
без сказки жить не можем,
Сказка
в гости к нам пришла.
Своих
сказочных героев
Нам
с собою привела».
- Присаживайтесь
на стулья.
-
Ребята, а вы любите сказки? (да)
- А
какие сказки вы знаете? (ответы детей)
-
Молодцы!
-
Вот и я тоже люблю сказки, и хочу предложить вам назвать русскую народную
сказку, отгадав её персонажей при помощи загадок.
-
Сначала внимательно слушаем загадку, а потом лишь говорим отгадку, кто знает
ответ, поднимает руку. Приготовьтесь слушать.
1. «Знают
всё о ней соседи,
Ведь
живут в одном лесу.
Знают
волки и медведи.
Про
обманщицу …» (Лису)
2. «Любит
он морковку кушать,
Оттопырив
кверху уши.
Наш
пугливый «попрыгайка»,
Дети,
кто же это?…» (Зайчик)
3.  «Отойди-ка
от берлоги.
Уноси
скорее ноги,
А не
то начну реветь.
Я не
ежик, а …» (Медведь)
4. «Важная
походка,
Красная
бородка,
 Шпоры,
алый гребешок —
Это
Петя…» (Петушок)
5. «Хозяин
двора.
Дом
– конура.
Виляет
радостно хвостом,
Но
чужака не впустит в дом». (Собака)
После
отгаданных загадок, воспитатель показывает персонажей.
Воспитатель: ребята, из какой
же сказки эти герои? (ответы детей) Правильно, из сказки «Заюшкина
избушка».
Сегодня
я вас приглашаю в наш кукольный театр на сказку «Заюшкина избушка»
Воспитатель:
«Раз,
два, три,
Театр,
в гости приходи!»
ТЕАТР КУКОЛ
Автор: Как от нашей
деревушки, тропка мерзнет вдоль опушки. Вьюгою взъерошена, снегом запорошена.
Целый день метель метет, сказки добрые плетет. Заплелась метель в косу. Сказка
будет про лису.
Под музыку на ширме появляется лисичка
Лиса: Я мечтаю об
одном. Вылепить красивый дом. Чтоб он был, как камень прочен, чтоб светло в нем
было ночью, чтоб сверкал как самоцвет. Ведь нигде такого нет.
Под музыку на ширме появляется Заяц.
Заяц: Здравствуй добрая
соседка. Жаль, что видимся мы редко. Что же лепишь ты, быка?
Лиса: Докатаю этот ком.
И себе построю дом. Не чета твоей избушке. Уноси от сюда ушки.
Заяц: Ты творишь тут
чудеса, до свидания, лиса.
Автор: Целый день лиса
старалась, чтобы дом закончить в срок.
Лиса: Я слепила, что
хотела. Целый замок изо льда.
Автор: Никогда еще
такого не видал никто в лесу. Про хрустальный замок новый, разнесли сороки
вести. И на чудо посмотреть собрались у дома вместе: медведь, собака и петух.
Медведь: Ух, берлога, то
что надо!
Собака: Эх, хоромы, так
хоромы! Хорошо сидеть ей дома. На дворе та ведь зима!
Медведь: Мне теперь в
своей берлоге, стыдно рядом с нею жить.
Воспитатель: Ребята,
посмотрите, у меня на доске домики героев этой сказки. Давайте, посчитаем,
сколько их? (5) Как мы уже знаем, лиса жила в избушке ледяной. А зайчик
в какой? (Лубяной). Вы нашли домик зайчика? Какой он по счету? А у лисы,
какая по счету избушка? А у медведя? А в доме под каким номером живёт петух? А
собака? Молодцы. Вы очень внимательные. Давайте продолжим смотреть сказку и
узнаем, что было дальше.
Автор: Зиму всю лиса
старалась, перестраивала дом, украшала, прибиралась. Хорошо ей было в нем! Но
пришла весна! От дома не осталось и следа. Все лисичкины хоромы, смыла талая
вода.
Воспитатель: Дети, как вы
думаете, почему избушка у лисы растаяла?
Дети: Наступила весна,
солнышко светит ярче, становится теплее, тает снег.
Воспитатель: Ребята из чего были построены дома в
сказке «Заюшкина избушка».
Дети: из льда и дерева.
Воспитатель: Давайте вспомним что такое лед?
Дети: Это замершая вода
Воспитатель: а какой лёд?
Дети: лед твердый, холодный.
Воспитатель: а дерево какое?
Дети: дерево твердое, крепкое.
Воспитатель: Молодцы. Все вы правильно сказали:
лед твердый, холодный. А дерево крепкое, прочное.
Воспитатель: Хорошо ребята давайте проведем эксперимент.
Дети проходят к столу, на котором
поднос, на нём домики из льда и дерева, лейка, лампа.
Эксперимент
Дети рассматривают домики
Воспитатель: из чего этот домик? (Из льда)
Воспитатель: Значит домик какой? (ледяной)
Воспитатель: Давайте проверим, что будет с
домиком изо льда, если подует ветер? (Вместе дуют, ничего не
происходит)
Воспитатель: Ветер не страшен этому дому! А
что с ним будет, когда наступит весна, пригреет солнышко и пойдёт теплый,
весенний дождик? (Воспитатель включает лампу и поливает из лейки) Что
случится тогда?
(Домик тает)
Воспитатель: Пойдёт такой материал для
строительства дома? (Нет, не пойдёт такой материал, дом может растаять, он
холодный)
Воспитатель: Из какого материала изготовлен
этот дом? (Из дерева)
Воспитатель: Значит, домик какой?  (Деревянный)
Воспитатель: Можно ли, жить в таком доме?
Давайте проверим. Страшен ли ему ветер? (Дети дуют, ничего не
происходит)
Воспитатель: А если вдруг пойдёт дождь как вы
думаете домик растает или нет? (Поливают из лейки) Подходит
дерево для строительства дома? (Да, дерево прочное, ему не страшен
ни дождь, ни ветер.)
Воспитатель закрепляет:
Ледяная избушка, как в сказке у Лисы растаяла. А деревянная избушка,
лубяная стоит по-старому.
Присаживайтесь, продолжим смотреть
сказку.

Автор: в тот же миг нашла лисица выход для
себя простой. И отправилась проситься в дом соседа на постой.
Лиса: Зайчик, ты открой мне дверь, я
бездомная теперь. Солнце, вредное, лучом, уничтожила мне дом. Зайчик,
миленький, пусти. Если есть за что, прости.
Заяц: Раз беда с тобой случилась. От неё
тебя спасу. Заходи же, сделай милость.
Лиса: Ты добрее всех в лесу!
Автор: Попросилась лиса к зайчику в избушку.
Да его же и выгнала.
В чаще леса темной, страшно быть
бездомным. Плачет зайчик, а лисе не почем те слезы все. Плач хоть до рассвета,
ей и дела нету.

Воспитатель: Дети, вам жалко зайчика? Давайте
вспомним, кто пришел первым на помощь зайчику? (первым пришел медведь.)
Воспитатель: помог ли медведь зайцу? (нет). А
вторым? (второй пришла собака.)
Воспитатель: Помогла ли собака
зайцу? (нет). А третьим? (третьим был петух).
Воспитатель: к сожалению,
петушок сейчас заболел и не может прийти на помощь зайчику. Кто же ему поможет?
Дети, вы хотите помочь Зайчику? (да)
Матвей,
а ну пойди, выгони лису.
Матвей (подходит к
ширме): лиса,
давай-ка выходи. А ну, поди вон!
Лиса:
кто
там опять? Ну, погоди! Выйду я сейчас за вами. Покажу свои клыки!
(Ребенок
убегает на стул).
Воспитатель: Что вы лиса? Не
надо нам показывать свои клыки. Мы очень хотим помочь зайчику. Это же его
избушка. А ты должна уйти.
Лиса:
и
куда же я пойду? Я
бездомная теперь. Солнце, вредное, лучом, уничтожила мне дом.
Воспитатель: а мы тебе
построим новый дом!
Лиса:
что
ж, посмотрим!
Воспитатель: дети, давайте
построим дом лисе. (У воспитателя на подносе магнитные детали для дома. Дети
строят дом на магнитной доске)
Воспитатель: Лиса, посмотри,
нравится ли тебе твой новый дом?
Лиса: очень нравится
мне дом! И не терпится мне в нем, устроить новоселье. Позову скорей друзей! Зайчик,
тоже приходи!
Заяц: Рад, что всё
здесь разрешилось!
Воспитатель: Дети, а как же
друзья лисы поймут, что это её новый дом. Давайте, напишем адрес, чтобы друзья
точно пришли по адресу. А как называется улица, на которой живет лиса, мы
узнаем, отгадав загадки- сказки.
И по
первым буквам отгадок составим название улицы. Готовы? Слушайте внимательно. (Дети
отгадывают загадки, определяют первый звук в слове, находят на столе
соответствующую букву и выкладывают на магнитной доске).
1.Как-то
раз в лесу густом
Вырос
домик под кустом
Рада
мышка-поскребушка
И
зеленая … (Лягушка)
2.Парень
слез с любимой печки,
За
водой поплелся к речке.
Щуку
в проруби поймал
И с
тех пор забот не знал. (Емеля)
3.Дед
и баба вместе жили,
Дочку
из снежка слепили,
Но
костра горячий жар
Превратил
девчурку в пар.
Дед
и бабушка в печали.
Как
же их дочурку звали? (Снегурочка)
4.Все
в Цветочном городишке
Знают
этого мальчишку.
Коротышку
и зазнайку,
Беззаботного
… (Незнайку)
5.Всех
на свете он добрей,
Лечит
он больных зверей,
И
однажды бегемота
Вытащил
он из болота.
Он
известен, знаменит,
Это
доктор … . (Айболит)
6.Горб,
лохмотья, нос крючком,
Мчится
в ступе с помелом
Над
дремучими лесами
В
избу с курьими ногами.
Там
одна живёт века
Злая,
вредная … (Яга)
Воспитатель: Дети, давайте
прочитаем как же называется улица. (ЛЕСНАЯ)
А
под каким номером жила лиса? (3)
Давайте,
полностью скажем адрес лисы. (улица Лесная дом номер 3)
Лиса: Большое спасибо
вам ребята. Приходите ко мне на новоселье.
Воспитатель: Ребята, какие вы
молодцы! И Зайчику помогли вернуть его избушку, и Лисе дом построили. Вам
понравилось в театре? (да). А это потому, что вы были его активными
участниками.

file_name: открытое занятие.docx

alt: Воспитатель : Пойдёт такой материал для строительства дома? (


extracted_text:
Технологическая карта  интегрированного урока

Обучение грамоте (чтение, письмо) 1 класс, 5 октября
2021г.

Тема урока

Звук
  [а]. Буква Аа.

Тип урока

Решение
  учебной задачи.

Вид урока

Интегрированный
  урок (чтение+письмо).

Цель урока

Создать
  условия для ознакомления  с гласным звуком [а], буквой Аа, развития речи.

Планируемые результаты  данного урока

Новые понятия и термины, которые будут
  введены (или закреплены) в ходе урока.

Гласные
  звуки, буква, печатная буква, письменная буква, заглавная буква, сточная
  буква, ребус, звуковая модель слова. К. Чуковский «Айболит».

Метапредметные умения (УУД), которые
  будут формироваться  в  ходе урока.

Предметные: усваивают главные понятия курса русского языка (фонетические,
  лексические), представляющие основные единицы языка и отражающие существенные
  связи, отношение и функции; знать особенности произношения звука [а] и его
  характеристику; называть букву Аа как знак звука [а]; различать печатную и
  письменную, заглавную (большую) и строчную (маленькую) букву; составлять
  небольшой рассказ повествовательного характера по сюжетной картинке; уметь
  разгадывать ребус; анализировать слова по модели.
Личностные: выражать положительное отношение к
  процессу познания: проявлять внимание, желание больше узнать; осознавать
  значимость чтения, потребность в систематическом чтении, важность и
  необходимость помощи нуждающимся в ней; высказывать свою точку зрения и
  уважать мнение собеседника
Познавательные: общеучебные- осознанно и
  произвольно строить речевое высказывание в устной форме; структурировать
  знания; логические – овладевать основами смыслового чтения
  художественных текстов; строить рассуждения в форме связи простых суждений;
  устанавливать причинно–следственные связи.
Регулятивные: принимать и сохранять учебную задачу;
  планировать своё действие в соответствии с поставленной задачей и условиями
  её реализации; адекватно воспринимать оценку учителя; оценивать правильность
  выполнения действия на уровне адекватной ретроспективной оценки.
Коммуникативные: понимать возможность различных позиций
  других людей, отличных от собственной, и ориентироваться на позицию партнёра
  в общении и взаимодействии; формулировать собственное мнение и позицию;
  договариваться и приходят к общему решению в совместной деятельности; в
  коммуникации строить понятные для партнёра высказывания; задавать вопросы;
  контролировать действия партнёра; адекватно использовать речевые средства для
  решения различных коммуникативных задач; владеть диалогической формой речи.

Организация урока

Межпредметные связи:

Литературное
  чтение, ИЗО.

Формы работы на уроке:

Фронтальная,
  групповая, парная.

Применение оборудования и
  инструментария:
(ТСО, ИКТ, таблицы, карточки и т. д.)

Климановой.
  Л.Ф. Учебник «Азбука»,1 кл. Стр. 68.
Пропись
  №2 «Мой алфавит». Стр. 6 – 7.
Электронное
  приложение к учебнику.
Презентация
  к уроку
Образец
  печатной и письменной буквы Аа.

_____________________________________________________________

Этап урока

Деятельность учителя

Деятельность
  ученика

УУД

1.Мотивация
(самоопределение)
  к учебной
деятельности

Прозвенел,
  друзья, звонок.
  Начинается урок.
  Мы сегодня снова будем наблюдать,
  Выводы делать и рассуждать,
  А чтобы урок пошёл каждому впрок,
  Активно в работу включайся, дружок!

Проверяют
  готовность к уроку

Регулятивные:
обучение
  организации своего рабочего места, контролю правильной посадки.
Личностные: формирование
  внутренней позиции школьника на уровне положительного отношения к школе и
  принятия образа хорошего ученика.

2.Актуализация
  знаний и
фиксирование
  индивидуального затруднения
в
  пробном действии

-
  Ребята, скажите, а на какие группы мы можем разделить звуки? (гласные и
  согласные).
-Как
  отличить гласный звук от согласного?
-
  А теперь представьте, что вы заболели и пришли на приём к врачу.
-Что
  просит сказать врач, когда осматривает горло? Слайд 2.

Отвечают
  на вопросы учителя.

Познавательные:
  развитие
  умения ориентироваться в учебнике, выделять то, что уже усвоено и то, что
  подлежит усвоению;
Коммуникативные:
  обучение
  умению отвечать на вопросы и выражать свои мысли с соответствующими возрасту
  полнотой и точностью.

3.
  Постановка учебной задачи

-
  Какой звук мы с вами произнесли? Что вы о нём можете сказать? Почему?
-
  Кто догадался, какая тема урока? Цель урока
Слайд
  3.

 [а]
  – гласный. Когда произносим этот звук во рту не встречаем преграду.
Определение
  темы и цели урока посредством метода незаконченных предложений.

Регулятивные:
  обучение
  умению определять тему урока, ставить  и сохранять учебные задачи в
  сотрудничестве с учителем; обучение
  умению выбирать действия в соответствии с поставленной задачей.
Познавательные:
  развитие
  умения применять знаково - символические средства для работы с учебником; развитие
  умения ориентироваться в учебнике,  выделять существенные признаки,  привитие
  читательского интереса, расширение кругозора.
Личностные:
  развитие
  познавательной мотивации учения.

4. Усвоение новых
  знаний и способов действий.

1.–
  К нам на урок пришёл доктор. Слайд 4. А из какого произведения
  догадайтесь сами.
-
  Кто автор?
- Кого
  лечил Айболит?
 Прочитайте
  об этом в учебнике на стр. 68.
-
  Прочитайте, что сказала лиса Айболиту?
-
  Что бы быть здоровыми мы должны соблюдать режим дня. Выполним физкультурную
  минутку.
ФИЗМИНУТКА
1.       Работа со
  звуковыми схемами. Разгадывание ребуса (Объяснить правило разгадывания ребуса).
а
  )Электронное приложение. 1 мин.
 - Укажи только
  тех зверей, в названии которых есть звук [а].
б)
  Электронное приложение. 1 мин)
 -
  Найдите в словах звук [а].

  в) Электронное приложение. Звуковые схемы.(3 мин)
-
  Составьте звуковые схемы слов.
 г)
  Учебник с. 68.
 – Разгадайте
  ребус.
2.       Знакомство с
  буквой Аа.
-
  Мы с вами произносили звук, а теперь его надо записать. Для этого придумали
  значки-буквы.

        Вот два столба наискосок, а между ними – поясок.

  Ты эту букву знаешь? А?

  Перед тобою буква «А». Слайд 5.
Знакомство
  с печатной заглавной и строчной буквой.
(Показ
  изображения буквы А на карточке)
Игра
  «Подбери букве картинку». Слайд6.
Электронное
  приложение. Прописи печатной буквы.
-
  Когда мы будем писать заглавную букву А?
  Взаимопроверка.

–
  Обведите самые красивые и удачные буквы.
ФИЗМИНУТКА

Отвечают
  на вопросы учителя.

Читают
  верхний отрывок.
Читают
  нижний отрывок

Разгадывают
  ребус.

Выполняют
  задание учителя.

Называют
  изображённые предметы, а затем находят звук.

Разгадывают
  ребус.

Называют
  букву.

Работают
  в рабочих тетрадях.

Регулятивные:
  развивать
  умение ставить и сохранять учебную задачу;
выполнять
  действия в громкоречевой форме, использовать речь для регуляции своего
  действия.
Познавательные:
  развитие
  умения применять знаково - символические средства для работы с учебником
  (схемы предложений);расширение кругозора.
Личностные:
  развитие
  познавательной мотивации учения;  способствовать пониманию
  нравственных норм.
Коммуникативные: обучение умению
  работать в паре: договариваться и выслушивать друг друга.

5. Закрепление знаний и способов
  действий.

1.
  Назови  слова на картинке.
Электронное
  приложение к учебнику
 -
  Найди 7 слов со звуком [а].
  2.
  Развитие речи.
Электронное
  приложение к учебнику
- Составьте по
  сюжетной картинке рассказ.
2.
  Развитие скорости чтения.
-
  Прочитай своему соседу. Игра «Кто быстрей». Слайд 7.
-
  Читаем с учителем. Слайд 8.

Выполняют
  задание учителя на ноутбуках
Работают
  на ноутбуках

Составляют
  по картинке рассказ.
Работают
  в группах.

Работают
  в парах.

«Жужащее»
  чтение.
Читают
  с учителем.

Регулятивные:
  развивать
  умение ставить и сохранять учебную задачу; обучать умению осуществлять
  контроль, используя способ сличения своей работы с заданным эталоном, вносить
  необходимые дополнения , исправления в свою работу.
Познавательные:
  расширение
  кругозора.

6.Рефлексия

-
  С каким звуком и буквой вы сегодня познакомились на уроке?
-
  Какие знания приобрели?
-
  Что особенно понравилось? Почему?
-
  Что вызвало затруднение? Почему?
-
  Оцените свою работу на уроке по «Шкале успеха».
-
  Спасибо за урок!

Участвуют
  в беседе по результату урока.

Оценивают
  себя в рабочей тетради на полях по «Шкале успеха».

Регулятивные:
  развитие
  умения осуществлять итоговый контроль результатов своей деятельности.
Личностные: формирование
  способности к самооценке.

Используемая
литература:

Климанова
     Л. Ф. Абрамова А.В. Просись «Мой алфавит». Часть 2. /
Л.
     Ф. Климанова, А.В. Абрамова. - М.
     Просвещение, 2015.
Климанова
     Л.Ф. Азбука. 1 класс. Часть 1 /Л.Ф. Климанова, С.Г. Макеева. – М.
     Просвещение, 2011.
Климанова
     Л.Ф. Методические рекомендации к урокам обучения грамоте. /Л.Ф. Климанова.
     – М. Просвещение, 2011.
Технологическая
     карта по обучению грамоте (чтение № 5, письмо №2) с сайта «УМК
     Перспектива» - http://www.prosv.ru/umk/perspektiva/info.aspx?ob_no=19931
Электронное
     приложение к учебнику Л.Ф. Климановой (CD).

Скачано с www.znanio.ru

file_name: Буква А.doc

alt: Этап урока Деятельность учителя

alt: К нам на урок пришёл доктор.

intro: Данный материал поможет в изучении первого гласного звука "А"

title: Технологическая карта интегрированного урока в 1-ом классе "Звук а, буква А"


file_name: ЕГЭ-Физика задач_с_отв._и_реш. 763.docx

title: К уроку физики