1 / 36

Принципы ООТ и C#

Рассмотрены основные принципы объектного подхода к проектированию программного обеспечения. Приведены фрагменты кода C#, для реализующие описание классов.

bolevik
Download Presentation

Принципы ООТ и C#

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Кот Барсик – экземпляр класса Animal class Animal Объектный подход к проектированию программ Установочная лекция по дисциплине «Высокоуровневые методы информатики и программирования»

  2. Сложность программного обеспечения Декомпозиция

  3. Абстрагирование Абстракция фокусируется на существенных с точки зрения наблюдателя характеристиках объекта

  4. Моделирование

  5. Синхронный двигатель Математическая модель двигателя

  6. Как строить абстрактный объект? В окружающем нас мире можно выделить различные группы вещей. Назовем их классами.

  7. Класс Animal class Animal { } Animal Barsik; Kind of animal = "Cat" ("Кот"). Height = 50 cm (большой котяра!). Length = 110 cm (это рысь скорее, а не домашняя кошка!). Number of legs = 4. Color = "Black" (черный). Has tail = true (истина). Is mammal = true (истина).

  8. Классы и объекты (экземпляры) класса class Animal { string kindOfAnimal; string name; intnumberOfLegs; int height; int length; string color; boolhasTail; boolisMammal; boolspellingCorrect; } AnimalBarsik; Barsik = new Animal(); Barsik.kindOfAnimal = "Cat"; Barsik.name = "Кот Барсик"; Barsik.numberOfLegs = 4; Barsik.height = 50; Barsik.length = 110; Barsik.color = "Black"; Barsik.hasTail = true; Barsik.isMammal = true;

  9. Описание класса [ атрибуты ] [ спецификаторы ] classимя_класса [ : предки ] тело_класса • Имя класса задается по общим правилам. • Тело класса — список описаний его элементов, заключенный в фигурные скобки. • Атрибуты задают дополнительную информацию о классе. • Спецификаторы определяют свойства класса, а также доступность класса для других элементов программы. Простейший пример описания класса: class Demo {} // пустой класс

  10. Доступ class Animal { public string kindOfAnimal; public string name; publicintnumberOfLegs; publicint height; publicint length; public string color; boolhasTail; protectedboolisMammal; privateboolspellingCorrect; } Ключ к hasTail не указан???

  11. Методы Сложение двух чисел А теперь, используя этот МЕТОД, сложи 2 числа 5 и 3

  12. void Say() { Console.WriteLine(“Myav"); } … Animal Barsik=new Animal (); Barsik.Say()

  13. .Net Содержит огромную библиотеку классов, сгруппированных по пространствам имен

  14. Пример класса public intHealth { // свойство get { return health; } set { if (value > 0) health = value; else health = 0; } } public void Passport()// метод { Console.WriteLine( "Monster {0} \t health = {1} \ ammo = {2}", name, health, ammo ); } public override string ToString(){ string buf = string.Format( "Monster {0} \t health = {1} \ ammo = {2}", name, health, ammo); return buf; } string name; // поле int health, ammo;// поле } class Monster { public Monster()// конструктор { this.name = "Noname"; this.health = 100; this.ammo = 100; } public Monster( string name ) : this() { this.name = name; } public Monster( int health, int ammo, string name ) { this.name = name; this.health = health; this.ammo = ammo; } public intGetName() // метод { return name; } public intGetAmmo() // метод { return ammo;}

  15. НАСЛЕДОВАНИЕ

  16. Полиморфизм • ООП позволяет писать гибкие, расширяемые и читабельные программы. • Во многом это обеспечивается благодаря полиморфизму, под которым понимается возможность во время выполнения программы с помощью одного и того же имени выполнять разные действия или обращаться к объектам разного типа. • Чаще всего понятие полиморфизма связывают с механизмом виртуальных методов. МетодMove (double s, double v)

  17. Достоинства ООП • использование при программировании понятий, близких к предметной области; • возможность успешно управлять большими объемами исходного кода благодаря инкапсуляции, то есть скрытию деталей реализации объектов и упрощению структуры программы; • возможность многократного использования кода за счет наследования; • сравнительно простая возможность модификации программ; • возможность создания и использования библиотек объектов.

  18. Недостатки ООП • некоторое снижение быстродействия программы, связанное с использованием виртуальных методов; • идеи ООП не просты для понимания и в особенности для практического использования; • для эффективного использования существующих объектно-ориентированных систем требуется большой объем первоначальных знаний; • неграмотное применение ООП может привести к значительному ухудшению характеристик разрабатываемой программы.

  19. Пример описания классов в С# Общее понятие. Поля, методы, ключи доступа. Конструкторы. Болгарина Е.В., РГППУ, 2010

  20. Описание класса class <имя>{ [ private] <описание скрытых элементов> public <описание доступных элементов> }; Болгарина Е.В., РГППУ, 2010

  21. Пример 1. Опишем класс Персона. 1.1. Полями данного класса будут Имя, Возраст, Зарплата. 1.2. Объявим метод вывода на экран информации об объекте. Болгарина Е.В., РГППУ, 2010

  22. Создадим 2 объекта (экземпляры класса – Рабочий и Начальник). Болгарина Е.В., РГППУ, 2010

  23. В итоге должно получиться следующее: Самостоятельно: Добавьте строки, задающие значения полям объекта boss. Результат работы программы должен быть примерно таким: Болгарина Е.В., РГППУ, 2010

  24. Ключи доступа. Изменим ключ доступа к полям с Publicна Private Болгарина Е.В., РГППУ, 2010

  25. Определение метода вне класса. В примере метод Show_informationопределен внутри класса. Но при большом количестве методов такой способ сделает описание класса слишком громоздким. Поэтому чаще всего в описании класса ограничиваются объявлением метода, а его реализацию описывают ниже. Болгарина Е.В., РГППУ, 2010

  26. Конструкторы. • Для создания объектов класса с инициализацией полей. • Конструктор всегда имеет такое же имя, как и класс. • Конструктор не возвращает никаких значений. • При создании объектов программа каждый раз будет вызывать описанный конструктор. • Конструкторов может быть несколько, в зависимости от того, какие из параметров вы хотите инициализировать. Болгарина Е.В., РГППУ, 2010

  27. Опишем конструктор для класса Person: Болгарина Е.В., РГППУ, 2010

  28. Теперь создавать объекты в теле главной процедуры будем с помощью Конструктора. Болгарина Е.В., РГППУ, 2010

  29. Результат: Болгарина Е.В., РГППУ, 2010

  30. Конструкторы по умолчанию Болгарина Е.В., РГППУ, 2010

  31. конструктор с пустыми полями Болгарина Е.В., РГППУ, 2010

  32. Обращение к закрытым полям класса. • Принцип сокрытия информации (инкапсуляция) предоставляет программе минимум информации по работе с классом. • Изменение полей класса возможно только через использование методов самого класса. • Создадим открытые, т.е. доступные программе методы по управлению полями класса Person: • Метод изменения зарплаты change_salary; • Метод вывода возраста get_age; Болгарина Е.В., РГППУ, 2010

  33. Болгарина Е.В., РГППУ, 2010

  34. Болгарина Е.В., РГППУ, 2010

  35. Болгарина Е.В., РГППУ, 2010

  36. Лабораторная работаИндивидуальные задания: • 1.Описать класс Aeroflot, содержащую закрытые поля: название пункта назначения рейса, номер рейса, тип самолета. • Описать конструкторы без параметров и с различным числом параметров. • Описать открытые методы Вывод информации, Замена номера рейса. • Создать несколько объектов (не менее 3х) и продемонстрировать работу созданных методов. • 2. Описать класс Price, содержащий следующие поля: название товара, название магазина, в котором продается товар, количество товара, стоимость единицы товара. • Описать конструкторы без параметров и с различным числом параметров. • Описать открытые методы Вывод информации, Замена стоимости товара. • Создать несколько объектов (не менее 3х) и продемонстрировать работу созданных методов. • Определить общую стоимость товара в определенном магазине. Болгарина Е.В., РГППУ, 2010

More Related