Тема 8. Классы

Развитие технологий программирования

Три основные стадии:

  1. Последовательное написание инструкций;
  2. Структурное программирование ( оператор goto внесён в чёрный список );
  3. Объектно-Ориентированное Программирование (ООП).

Повторное использование кода:

  • уменьшает трудоёмкость программирования;
  • уменьшает количество багов.

Свойства класса:

  • Инкапсуляция - сокрытие внутренней реализации внутри;
  • Наследование - производный класс может всё то, что может родительский;
  • Полиморфизм - там где может работать родительский, может работать и производный.

Концепция Клиент-Сервер: Класс - это Сервер, потребляющий его код - Клиент.

Структура простого класса в 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

results matching ""

    No results matching ""