16. C-sharp 10 05-11-2013

Created Saturday 23 November 2013

** Введение в ООП с элементами ООД
** Классы
*** Отличия класса от структуры
1) Даже если оформлены одинаково, есть разница в реализации:
+ Структура - тип значения
+ хранится в (быстром) стеке
+ Класс - ссылочный тип
+ Всё что есть в качестве переменной, это адрес в памяти,
и любая операция с переменной класса это вычисление памяти,
что более ресурсоёмко
*** С точки зения ООП
+ В классе объявляются переменные и методы
*** С точки зрения дизайна:
+ Класс - это абстрактный тип данных
+ Инструмент для моделирования объектов
**** При проектировании класса необходимо соблюдать некоторые принципы
1) Принцип инкапсуляции
+ Защита данных
+ С точки зрения программирования это сводится к
объявлению переменных с модификатором private, а
методы могут быть объявлены с модификатором public
+ Определение доступности методов связано с абстракцией
в моделировании класса - реализацией только необходимой
функциональности. Только те методы, которые реализуют
абстракцию, должны быть public
2) Наследование (позже)
3) Полиморфизм (позже)
** Инкапсуляция
*** Пример инкапсуляции переменной price (простая схема)
#+BEGIN_SRC C#
class Table {
private double price;
public double GetPrice(){ // "getter" method
...
}
pulic void SetPrice(double p){ // "setter" method
...
}
}
#+END_SRC
*** Классная работа
1) Смоделировать объект Студент, который характеризуется возрастом,
возраст можно читать.
2) Добавить возможность устанавливать возраст
** Классы и конструкторы
+ Присвоение начального значения переменных правильно делать в конструкторе
+ Конструктор как правило public
+ Конструктор имеет то же имя, что и класс
+ Конструктор не может возвращать значение
+ Конструкторов может быть несколько (перегруженных)
+ Конструктор должен инициализировать свойства, без которых
моделируемый объект не существует
+ Деструкторы вызываются автоматически системой .NET Framework (позже)
+ Классная работа
+ Описать объект "Учебный класс", у которого есть название,
которое можно менять, читать. У объекта должен быть конструктор
с инициализацией названия ("Expert"). Использовать переменную
classRoom
** Дальше двигаемся так
| OOP | OOD |
|-----+--------------|
| | Modeling |
| | Object model |
| | |
+ Конечным пунктом ООД является объектная модель, которую программист должен
реализовать в программе
+ Объектная модель - это совокупность всех классов с учётом всех взаимодействий
между ними.
+ Между некоторыми классами существует взаимоотношение наследования
+ Во многих случая наследование не используется
+ Наследование - искусственный инструмент, позволяющий программисту
писать меньше кода
+ Наиболее расспространённая связь между объектами - аггрегация (вложение, containment).
** Обычно связи между классами укладываются в одну из 2х схем:
1) Наследование (принцип is-a)
2) Аггрегация (принцип part-of)
** Homework
1) Спроектировать объектную модель школы программирования, в которой
есть 3 учебных класса под названиями "Master", "Expert", "Professional".
Протестировать.
2) Создать объектную модель учебного класса, в котором установлено 15 компьютеров.
У каждого копьютера может быть дисплей либо LCD, либо CRT, либо 17", либо 19"
(любой). Модель позволяет распечатать список компьютеров в классе с
характеристиками дисплеев.
3) Создать объектную модель, которая описывает стул, у которого есть спинка,
сидение, 4 ножки. Ножки съёмные и их можно менять - т.е. снимать и вставлять.
Спинка и сидение могут быть разного материала - кожа, дерево, пластик.



Backlinks: