Лекция 12
16. Объектно-ориентированное программирование (ооп)
Объектно-ориентированный подход основан на:
выделении классов объектов;
установлении свойств объектов и методов их обработки (подпрограммы);
создании иерархии классов, наследовании свойств объектов и методов их обработки.
ООП используется при разработке крупных программных проектов.
Традиционный подход:
Y = Z(X); {Z- функция над переменной X} y=sin(x)
То же действие с ООП:
Y = X . Z; {Z- метод, применяемый к объекту X} y=Math.Sin(x)
Основные понятия ООП: объект, свойства, метод.
Объект – совокупность свойств, методов их обработки (процедуры и функции) и событий, на который данный объект может реагировать, и которые приводят к изменению свойств объекта.
Объект – многократно используемый программный модуль – экземпляр класса.
16.1. Классы в с#
Однотипные объекты могут объединяться в классы (группы).
Класс – множество объектов, связанных общностью структуры и поведения. Или особый тип записи, имеющий в своем составе поля, свойства и методы обработки.
Конкретный объект, имеющий структуру этого класса, называется экземпляром класса, например button1. Сам класс определяется общими свойствами, которые имеют все экземпляры этого класса.
Например, объекты (экземпляры) button1, button2 … относятся к классу Button.
Поля класса служат для хранения информации об объекте (аналогичны полям записи). Одной стороны, свойства можно использовать как поля, например, присваивать им значения с помощью оператора присваивания, с другой стороны, внутри класса доступ к значениям свойств выполняется методами класса.
button1. Font.Size label1. BackColor
поля
поля
Методами называются процедуры и функции, предназначенные для обработки внутренних данных объекта данного класса (полей). Объект может обладать набором заранее встроенных методов обработки, созданных пользователем, которые выполняются при наступлении заранее определенных событий, например: нажатие кнопки мыши, определенной клавиши, выбор пункта меню и т.п..
Свойства – характеристики объекта, его параметры. Объект представляется с помощью присущих ему свойств.
Например:
ОБЪЕКТ_1 (свойство-1, свойство-2, . . . свойство-k).
Свойства объектов различных классов могут пересекаться. Например:
ОБЪЕКТ_А (. . свойство-n, свойство-m, . . . свойство-k).
ОБЪЕКТ_B (свойство-1,. . . свойство-n, . . . свойство-k).
ОБЪЕКТ_А – button1 (Font, BackColor, ForeColor, Image, Text, Visible)
ОБЪЕКТ_B – label1 (Font, BackColor, ForeColor, TextAlign, Text, Visible)
Классы
Класс является чертежом для пользовательского типа данных. Определив класс, его можно использовать, загрузив в память. Класс, загруженный в память, называется объектом или экземпляром класса. Классы объявляются с помощью ключевого слова class. Экземпляр класса создается с помощью ключевого слова new.
class <Имя класса> [: список родителей]
{
//объявление переменных экземпляра
доступ тип переменная1;
. . . . . . . . . .
доступ тип переменнаяN;
//объявление методов
доступ тип_возврата метод1(параметры)
{
// тело метода1
}
}
Подобно тому, как на основе одного чертежа можно построить несколько зданий, можно создать любое количество объектов одного класса. Очень часто используются массивы или списки, содержащие множество объектов одного класса. Каждый экземпляр класса занимает отдельную область памяти; значения его полей также являются независимыми.
Класс может содержать:
Методы.
Свойства.
Поля.
События.
Делегаты.
Члены класса могут иметь модификаторы:
Ключевое слово public является модификатором доступа для типов и членов типов. Общий (public) доступ является уровнем доступа с максимальными правами. Ограничений доступа к общим членам не существует.
Ключевое слово private является модификатором доступа к члену класса. Закрытый (private) доступ является уровнем доступа с минимальными правами. Доступ к закрытым членам можно получить только внутри тела класса или структуры, в которой они объявлены.
Ключевое слово protected является модификатором доступа к члену класса. Доступ к члену с модификатором protected (защищенный) возможен внутри класса и из производных экземпляров класса.
Модификатор static используется для объявления статического члена, принадлежащего собственно типу, а не конкретному объекту. Модификатор static можно использовать с классами, полями, методами, свойствами, операторами, событиями и конструкторами. Нельзя использовать с индексаторами, деструкторами или типами, отличными от классов.
При использовании в качестве возвращаемого типа метода ключевое слово void обозначает, что этот метод не возвращает какого-либо значения. Ключевое слово void не может входить в список параметров метода.
