Понятие объектно-ориентированного программирования

advertisement
Сахалинский филиал Дальневосточного федерального университета
Кафедра прикладной информатики и математики
Сахалинский научный центр
Институт морской геологии и геофизики ДВО РАН
Профессиональное
программирование
на языке C#
Лекция №3 «Он живой и светится!»
Доктор физ.-мат. наук,
профессор Р.В. Шамин
План сегодняшней лекции:
Понятия об объектно-ориентированном программировании
Классы и объекты в C#
Инкапсуляция объектов
Наследование
Понятие о полиморфизме
Что мы с вами сегодня создадим?
Прошлый долг об анимации – ползающий объект
Поиграемся с объектами
…
Парадигмы языков программирования:
Стоимость программного обеспечения очень быстро превзошла
стоимость компьютеров!
• Сложность разработки больших программ требовала
промышленного способа их разработки.
• Требовались технологии написания программ большими
коллективами
• Код должен быть не только и не сколько эффективным, но и
понятным другим программистам
1.
Структурное программирование
Первая четко сформулированная парадигма программирования.
Основана на декомпозиции программы на отдельные модули и на
правилах программирования.
2.
Объектно-ориентированное программирование
Парадигма программирования, основанная на абстракции данных.
Современный стандарт разработки программных продуктов.
*.
Функциональное, логическое, агентное, событийноуправляемое, декларативное и иное программирование…
Понятие объектно-ориентированного программирования:
Основные столпы:
Основные языки:
 инкапсуляция
 наследование
 полиморфизм
SmallTalk, C++,
C#, Java, PHP,
Delphi, Ada, Ruby
Инкапсуляция:
• Сокрытие реализации объекта
• Отделение данных от реализации
Наследование:
• Создание новых классов
добавлением полей и методов
• Отличный способ повторного
использования кода
Классы и объекты
Полиморфизм:
• Модификация существующих
классов при наследовании
• Самое удивительное в ООП!
Класс состоит из:
В терминах C#:
класс – новый тип данных
объект – переменная класса
• полей – данные
• методов – функции
Как это выглядит в C#?
class TPocoyo
{
protected Color MyColor;
public int Tag;
public TPocoyo(Color C)
{
MyColor = C;
}
}
public Color GetColor()
{
return MyColor;
}
{
TPocoyo Pocoyo;
Pocoyo = new TPocoyo(Color.Blue);
Pen p = new Pen(Pocoyo.GetColor());
Pocoyo.Tag = 1024; // можно
Pocoyo.MyColor = Color.Red;// нет!
TPocoyo Poc2 = new TPocoyo(Color.Red);
Pocoyo = Poc2;
}
Инкапсуляция – мощное средство объектно-ориентированного
программирования, позволяющее изменить весь стиль
программирования!
Наследование:
Особую гибкость объектно-ориентированному программированию
придает наследование. Как улучшить функционал Pocoyo?
class TLivePocoyo : TPocoyo
{
protected string Name;
protected bool IsChangeColor;
public TLivePocoyo(string Name, Color C) :
base(C)
{
this.Name = Name;
IsChangeColor = false;
}
}
public void SetColor(Color C)
{
MyColor = C;
IsChangeColor = true;
}
Как думать объектно-ориентировано?
Процедурный подход подразумевает, что
Вы все сами думаете за всю программу. А
если несколько человек думает, то это еще
ужаснее..
Нужно помнить о данных, чтобы их не
испортить и о функция..
Объектно-ориентированный подход позволяет управлять
независимыми и целостными объектами, наделенными нужной
функциональностью.
Давайте играть в
глобальный
бильярд
живыми
объектами!
Как Алиса в
крокет…
А объекты пусть будут
живыми и пусть
светятся!
Download