150 likes | 432 Views
Программирование на языке C#. Основы ООП. План занятия. Принципы ООП Абстрагирование Инкапсуляция Наследование Полиморфизм. Принципы ООП. Шесть принципов Алана Кея: Всё является объектом. Принципы ООП. Шесть принципов Алана Кея:
E N D
Программирование на языке C# Основы ООП
План занятия Принципы ООП Абстрагирование Инкапсуляция Наследование Полиморфизм
Принципы ООП Шесть принципов Алана Кея: Всё является объектом.
Принципы ООП Шесть принципов Алана Кея: 2. Каждый объект является представителем (экземпляром) класса, который выражает общие свойства объектов.
Принципы ООП Шесть принципов Алана Кея: 3. В классе задаётся поведение (функциональность) объекта. Тем самым все объекты, которые являются экземплярами одного класса, могут выполнять одни и те же действия.
Принципы ООП Шесть принципов Алана Кея: 4. Классы организованы в единую древовидную структуру с общим корнем, называемую иерархией наследования. Память и поведение, связанное с экземплярами определённого класса, автоматически доступны любому классу, расположенному ниже в иерархическом дереве.
Принципы ООП Шесть принципов Алана Кея: 5. Каждый объект имеет независимую память, которая состоит из других объектов.
Принципы ООП Шесть принципов Алана Кея: 6. Вычисления осуществляются путём взаимодействия (обмена данными) между объектами, при котором один объект требует, чтобы другой объект выполнил некоторое действие. Объекты взаимодействуют, посылая и получая сообщения. Сообщение — это запрос на выполнение действия, дополненный набором аргументов, которые могут понадобиться при выполнении действия.
Абстрагирование Выделяете только те факторы, которые нужны для решения задачи Отсекайте все лишнее
Инкапсуляция length r x, y а b c Пользователь (прикладной программист) не должен менять внутреннее состояние объекта – он не знает, как это делается!!! Поля и методы делятся на внутренние и интерфейсные.
Объявление класса [атрибуты] [спецификаторы] classимя_класса [: предки] { [атрибуты] [спецификаторы] тип имя_поля [= значение]; [атрибуты] [спецификаторы] тип имя_метода(параметры) { тело метода } [атрибуты] [спецификаторы] тип имя свойства { [спецификаторы] get { тело } [спецификаторы] set { тело } } }
Пример public classCircle { public double x public double y; private double r; public double R { get { return r; } set { if(value >= 0) r = value; } } public double GetLength() { return 2 * Math.PI * r; } }
Спецификаторы доступа • Методы и поля • private (по умолчанию) • public • internal • static • protected (наследование) • protected internal (наследование) • abstract (только для методов, полиморфизм) • new (только для методов, наследование) • override (только для методов, полиморфизм)
Спецификаторы доступа • Класс • internal (по умолчанию) • public • static • sealed (наследование) • abstract (полиморфизм)