Слайд 1Объектно-ориентированное программирование
основные понятия
Слайд 2Объектно-ориентированное программирование (ООП)
Это методика разработки программ, в основе которой лежит
понятие объекта как некоторой структуры, соответствующей объекту реального мира, его
поведению.
Слайд 3Информационная модель объекта
Объект-оригинал заменяется набором его характеристик (свойств) и их
значений
Объект - Дом
Слайд 4Класс
Это тип, описывающий устройство объектов (их поведение и способ представления)
Класс
можно сравнить с чертежом, согласно которому создаются объекты
Слайд 5Объявление класса
сlass Person
{
string Name;
string Address;
int Year;
}
Объекты как представители класса создаются при помощи операции new
Person Men
= new Person();
Person Women = new Person();
Слайд 6Инкапсуляция
Это объединение внутри класса его данных с функциями, обрабатывающими эти
данные (методами)
Под инкапсуляцией понимают скрытие полей объекта с
целью обеспечения доступа к ним только посредством методов класса
Слайд 7Методы
Методы класса выполняют действия над объектами класса
Включая объявление метода в
объявление класса, программист явно указывает, какие действия могут быть выполнены
над объектами этого класса
Слайд 8Объявление методов
сlass Person
{ string Name;
string Address;
int Year;
public Person(string
N, string A, int Y)
{
Name = N;
Address = A;
Year = Y;
}
Слайд 9 public void Show()
{
Console.WriteLine(Name);
Console.WriteLine(Address);
Console.WriteLine(Year);
}
public int GetYear()
{
return Year;
}
}
Слайд 10Конструктор
В C# объект – это динамическая структура.
Переменная-объект содержит не
данные, а ссылку на данные объекта.
Поэтому программист должен выделить
память для этих данных при помощи специального метода класса – конструктора.
Имя конструктора совпадает с именем класса.
Слайд 11Описание конструктора
public Person(string N, string A, int Y)
{
Name = N;
Address
= A;
Year = Y;
}
Конструктор вызывается при создании объекта с помощью операции new
Person Men = new Person(“Иванов”,“СПб”,1976);
Слайд 12Вызов методов
Для обычных (не статических) методов вызов осуществляется через имя
экземпляра класса.
Person Men = new Person(“Иванов”,“СПб”,1976);
Men.Show();
int myYear = Men.GetYear();
Слайд 13Для защиты полей объекта используют директиву
private (закрытый)
Директива private используется
также для ограничения использования некоторых методов объекта
Поля и методы, объявленные
как private, не доступны за пределами класса, которому они принадлежат, даже в порожденных классах
Слайд 14Сокрытие данных
Неотделимая часть ООП, управляющая областями видимости
Целью сокрытия данных является
предельная локализация изменений в коде программы
Вместо прямого доступа к полям
объекта следует использовать методы
Слайд 15Выводы:
Инкапсуляция - это принцип, согласно которому любой класс должен рассматриваться
как черный ящик
Пользователь класса должен видеть и использовать только интерфейсную
часть класса (список декларируемых свойств и методов)
Слайд 16Наследование
Это механизм, позволяющий создавать иерархии объектов
Наследованием называется возможность порождать один
класс от другого с сохранением всех свойств и методов класса-предка,
добавляя при необходимости новые свойства и методы
Слайд 17Иерархия
Это набор классов, связанных отношением наследования
Слайд 18Пусть определены три класса, один из которых является базовым для
двух других
сlass Person
{ string Name;
string Address;
int Year;
public Person(string N, string A, int Y)
{
Name = N;
Address = A;
Year = Y;
}
}
Слайд 19Класс-потомок должен иметь свой конструктор
class Student: Person
{
int Group;
public
Student(string N, string A, int Y, int G): base (N,
A, Y)
{
Group = G;
}
}
Слайд 20class Professor: Person
{
string Kafedra;
public Professor(string N, string A, int
Y, string K):
base (N, A, Y)
{
Kafedra = K;
}
}
Слайд 21Переопределение методов
Объект-потомок наследует не только поля родителя-объекта, но и методы
Использование
имени метода родительского типа в объявлении дочернего типа называется переопределением
метода
Слайд 22Полиморфизм
«поли» значит «много», а «морфизм» — «изменение» или «вариативность»
таким образом, «полиморфизм» — это свойство одних и тех же
объектов и методов принимать разные формы.
Слайд 23Полиморфизм
Полиморфизмом называют явление, при котором один и тот же программный
код (полиморфный код) выполняется по-разному, в зависимости от того, объект
какого класса используется при вызове данного кода
Слайд 24Виртуальный метод
virtual - виртуальный (возможный – лат.)
Объявление метода виртуальным дает
возможность дочернему классу произвести замену виртуального метода своим собственным
Метод порожденного
класса, замещающий метод родительского класса, помечается директивой override
Слайд 25Определение метода Show для каждого класса
сlass Person
{
…
virtual public void Show()
{
Console.WriteLine(Name);
Console.WriteLine(Address);
Console.WriteLine(Year);
}
}
Слайд 26сlass Student: Person
{
…
override public void Show()
{
base.Show();
Console.WriteLine(Group);
}
}
Слайд 27сlass Professor: Person
{
…
override public void Show()
{
base.Show();
Console.WriteLine(Kafedra);
}
}
Слайд 28Программа демонстрации наследования
namespace ConsoleApplication1
{
class DecTo
{
string State;
int Base;
public DecTo(string s)
{
this.State = s;
this.Base = s.Length;
}
Слайд 29// метод перевода чисел
public string Trans(int
Dec)
{
string r = "\0";
int Ost;
do
{
Ost = Dec % Base;
r = State[Ost] + r;
Dec /= Base;
}
while (Dec > 0);
return r;
}
}
Слайд 30class DecToBin : DecTo
{
public
DecToBin() : base ("01");
}
class DecToOct
: DecTo
{
public DecToOct(): base ("01234567");
}
class DecToHex : DecTo
{
public DecToHex(): base("0123456789ABCDEF");
}
Слайд 31class Program
{
static void Main()
{
int D;
Console.WriteLine("Input value in 10 system:");
D = Convert.ToInt32(Console.ReadLine());
Console.WriteLine();
DecToBin P1 = new DecToBin();
DecToOct P2 = new DecToOct();
DecToHex P3 = new DecToHex();
Console.WriteLine("2 system -> " + P1.Trans(D));
Console.WriteLine("8 system -> " + P2.Trans(D));
Console.WriteLine("16 system -> " + P3.Trans(D));
Console.ReadKey();
}
}
Слайд 33Основные концепции ООП
Система состоит из объектов
Объекты взаимодействуют
между собой, могут быть связаны отношением наследования
Каждый объект характеризуется
своим состоянием и поведением
Состояние объекта задается значениями полей данных
Поведение объекта задается методами
Дочерние классы наследуют поля и методы своего родительского класса, с возможностью добавления новых свойств и методов
Есть возможность переопределить в дочернем классе некоторые методы( не виртуальные методы переопределять не рекомендуется! )
Слайд 34Проверочная работа № 1
I вариант
Базовый класс Товар (поля Название, Цена,
Производитель), дочерний класс Продукт (доп. поле Срок реализации - дней)
II
вариант
Базовый класс Автомобиль (поля Производитель, Модель, Год выпуска), дочерний класс Автобус (доп. поле Вместимость)
Слайд 35План работы:
Описать поля базового класса
Описать конструктор базового класса
Описать метод Show
для вывода на экран значений полей
Описать метод Get, возвращающий значение
одного из полей
Аналогично для дочернего класса
В главной функции создать по 1 объекту каждого класса
Показать вызов методов