Similar presentations:
Язык программирования C# 6.0, модуль 5
1. Язык программирования C# 6.0 модуль 5
www.specialist.ru2. Основы ООП
Использование абстракций.Инкапсуляция.
Наследование и Агрегирование.
Полиморфизм.
Назвать плюсы и минусы этих принципов ООП.
www.specialist.ru
2
3. Объявление класса
public class Star { }static void Main(string [ ] args) {
Star star;
star = new Star();
...
}
Сколько методов в нашем классе Star?
www.specialist.ru
3
4. Элементы класса
Характеристики объекта – данные члены класса.string firstName, lastName;
Решаемые задачи(поведение) – методы класса.
public double Area() { . . . }
Служебные методы для управления объектом.
конструктор/деструктор
www.specialist.ru
4
5. Модификаторы доступа к элементам класса
publicдоступ неограничен
protected
доступ ограничен самим классом или его
наследниками
internal
доступ ограничен сборкой
protected internal
доступ ограничен сборкой или
наследниками нашего класса
private
доступ ограничен самим классом
www.specialist.ru
5
6. Реализация инкапсуляции
Методы:private string name;
public string getName() {return name;}
public void setName(string newName) {name=newName}
...
obj.getName() и obj.setName(“Alex”)
Свойства:
obj.Name
и
obj.Name=“Alex”
www.specialist.ru
6
7.
private string name;public string Name {
get { return name; }
set { name=value; }
}
Автоматические свойства:
public string Name { get; set; }
Новейший синтаксис свойств:
public string Name { get; private set; } = “Alex”;
public string Name { get; } = “Alex”;
использовать
конструкторе !!
//можно
// в
www.specialist.ru
7
8. Данные объекта и данные класса
class Star {int edegs=5;
int brightness=3;
static Color color;
}
s1
5,3
……
Star s1=new Star();
Star s2=new Star();
s2
5,3
color = 0
www.specialist.ru
8
9. Служебные методы
Конструктор – инициализация объекта:class Star {
public Star(int edegs, int brightness=3) { . . . }
}
Star s1=new Star();
// ok?
Star s2=new Star(7);
// ok?
Основной(primary) конструктор:
class Star (int edegs, int brightness) {
public int Edegs { get; } = edegs;
public int Brightness { get; } = brightness;
...
}
реализован ….
// не
www.specialist.ru
9
10.
Статический конструктор – инициализация данныхкласса:
class Star {
...
static Star( ) { color=1213; } // и как его
вызвать?
}
Деструктор – деинициализация объекта:
class Star {
...
~Star( ) { }
}
www.specialist.ru
10
11. Пример создания класса
Перегрузка конструктора.Основной конструктор.
this и его применение.
Реализация инкапсуляции, свойства.
Создание и инициализация объекта.
Модификаторы const vs. readonly
Работа со статическими данными.
Создание массива объектов.
www.specialist.ru
11
12. Статический класс
Нельзя создать объект этого класса.Нельзя наследовать от этого класса.
Содержит только статические члены класса.
Наследует только от класса object.
Запрещено использование модификаторов
protected и protected internal.
using static System.Math
www.specialist.ru
12
13. Разделяемый(partial) класс
partial class My {int a;
public My() { }
}
partial class My {
int b;
public Test() { }
}
class My {
int a;
int b;
public My() { }
public Test() { }
}
www.specialist.ru
13
14. Вложенные классы
class Outer{
private static void Funk() {
Console.WriteLine(“Funk");
}
private class Nested
{
private static void G() {
Funk();
// есть доступ к приватным полям внешнего класса!
}
}
}
www.specialist.ru
14
15. Практика
Откройте приложение “Geometry”.Добавьте новый класс “Circle”.
Добавьте данные для задания размеров и внешнего
вида фигуры.
Продумайте инициализацию данного объекта.
Реализуйте методы “Area”, ”Move” и ”PrintInfo”
Создайте, инициализируйте и распечатайте одну из
фигур в коде.
www.specialist.ru
15