Тема 8. Классы
Развитие технологий программирования
Три основные стадии:
- Последовательное написание инструкций;
- Структурное программирование ( оператор goto внесён в чёрный список );
- Объектно-Ориентированное Программирование (ООП).
Повторное использование кода:
- уменьшает трудоёмкость программирования;
- уменьшает количество багов.
Свойства класса:
- Инкапсуляция - сокрытие внутренней реализации внутри;
- Наследование - производный класс может всё то, что может родительский;
- Полиморфизм - там где может работать родительский, может работать и производный.
Концепция Клиент-Сервер: Класс - это Сервер, потребляющий его код - Клиент.
Структура простого класса в C# ( Инкапсуляция )
class Person
{
public string Name;
public string SurName;
public int Age;
public void WriteName()
{
Console.WriteLine(Name + " " + SurName);
}
public void WriteAge()
{
Console.WriteLine(Age);
}
public virtual void WriteFullInfo()
{
Console.WriteLine(Name + " " + SurName + " " + Age);
}
}
Использование класса
Пример 1:
Person p = new Person();
p.Name = "Ronald";
p.SurName = "Adler";
p.Age = 27;
p.WriteFullInfo();
Пример 2:
Person p = new Person();
p.Name = "Ronald";
p.SurName = "Adler";
p.WriteName();
Наследование
Наследование - вариант повторного использования кода класса.
class Worker: Person
{
public string Profession;
public virtual void WriteFullInfo()
{
Console.WriteLine(
Name + " " + SurName + " " +
Age + " " + Profession);
}
}
Использование класса – потомка 1
Пример 1:
Worker w = new Worker();
w.Name = "Ronald";
w.SurName = "Adler";
w.Age = 27;
w.WriteFullInfo();
Пример 2:
Worker w = new Worker();
w.Name = "Ronald";
w.SurName = "Adler";
w.WriteName();
Результат: класс–потомок может все то, что и его родитель.
Полиморфизм
Полиморфизм - вариант повторного использования кода потребителем класса.
Пример 1:
Person p = new Worker();
p.Name = "Ronald";
p.SurName = "Adler";
p.Age = 27;
p.WriteFullInfo();
Пример 2:
Person p;
p = new Person();
p.Name = "Ronald";
p.SurName = "Adler";
p.WriteName();
p = new Worker();
p.Name = "Ronald";
p.SurName = "Adler";
p.WriteName();
Результат: переменной класса-родителя могут быть присвоены объекты класса-родителя и классов–потомоков, то есть переменная класса-родителя может принимать множество форм.
Дополнительная литература
http://metanit.com/sharp/tutorial/3.1.php http://mycsharp.ru/post/24/2013_06_21_klassy_v_si-sharp_obyavlenie_klassov_i_sozdanie_obektov.html http://mycsharp.ru/post/23/2013_06_20_ponyatie_obektno-orientirovannogo_programmirovaniya_%28oop%29_klassy_i_obekty.html