Сахалинский филиал Дальневосточного федерального университета Кафедра прикладной информатики и математики Сахалинский научный центр Институт морской геологии и геофизики ДВО РАН Профессиональное программирование на языке 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; } Как думать объектно-ориентировано? Процедурный подход подразумевает, что Вы все сами думаете за всю программу. А если несколько человек думает, то это еще ужаснее.. Нужно помнить о данных, чтобы их не испортить и о функция.. Объектно-ориентированный подход позволяет управлять независимыми и целостными объектами, наделенными нужной функциональностью. Давайте играть в глобальный бильярд живыми объектами! Как Алиса в крокет… А объекты пусть будут живыми и пусть светятся!