Реализация принципов ООП в .net

Содержание

Слайд 2

Конструкторы

Конструктор – это специальный метод класса, который позволяет создавать объекты данного класса,

Конструкторы Конструктор – это специальный метод класса, который позволяет создавать объекты данного
настраивая при этом их исходное состояние.

Слайд 3

Конструкторы

Конструкторы

Слайд 4

Конструкторы

class Bachelor : Student //класс бакалавров
{
private string _surname;
private string _name;

Конструкторы class Bachelor : Student //класс бакалавров { private string _surname; private
public Bachelor(string surname, string name)
{
_surname = surname;
_name = name;
}
}

Слайд 5

Конструкторы

class Master : Student //класс магистров
{
private string _surname;
private string _name;

Конструкторы class Master : Student //класс магистров { private string _surname; private
public Master(string surname, string name)
{
_surname = surname;
_name = name;
}
}

Слайд 6

Конструкторы

//класс, определяющий всех студентов
class Student
{
private string _surname;
private string _name;
public

Конструкторы //класс, определяющий всех студентов class Student { private string _surname; private
Student(string surname, string name)
{
_surname = surname;
_name = name;
}
}

Слайд 7

Наследование

class Master : Student
{
private string _surname;
private string _name;
//автоматически устанавливаем

Наследование class Master : Student { private string _surname; private string _name;
значения //для базового класса:
public Master(string surname, string name)
: base(surname, name)
{
_surname = surname;
_name = name;
} }

Слайд 8

Наследование

private float st = 150;
public void Stipend(float proc) //стипендия
{
st += st

Наследование private float st = 150; public void Stipend(float proc) //стипендия {
* proc / 100;
}
private string FullName() //полное имя
{
return _surname + " " + _name;
}
public void ShowInf() //информация о студенте
{
Console.WriteLine(FullName() + " стипендия=" +
st.ToString());
}

Слайд 9

Наследование

static void Main(string[] args)
{
Master mag = new Master("Иванов", "Петр");
mag.Stipend(50);
mag.ShowInf();

Наследование static void Main(string[] args) { Master mag = new Master("Иванов", "Петр");
Bachelor bak = new Bachelor("Васильев", "Иван", 4);
bak.Stipend(30);
bak.ShowInf();
}

Слайд 10

Виртуальные методы

Задача: Если бакалавры не сдали сессию, предположим они должны получить минимальную

Виртуальные методы Задача: Если бакалавры не сдали сессию, предположим они должны получить
стипендию (без начисления процентов). Успевающие на хорошо и отлично должны получить повышенную стипендию.
Минимальная оценка 2 – не сдали сессию,
минимальная оценка 4 – хорошисты.

Слайд 11

Виртуальные методы

//определяем в родительском классе
// метод Stipend как виртуальный
public virtual void

Виртуальные методы //определяем в родительском классе // метод Stipend как виртуальный public
Stipend(float proc)
{

}

Слайд 12

Виртуальные методы

//в производном классе его можно заместить:
public override void Stipend(float proc)
{
if

Виртуальные методы //в производном классе его можно заместить: public override void Stipend(float
(_mark == 2) base.Stipend(0);
else
{
if (_mark >= 4) base.Stipend(proc + 20);
else base.Stipend(proc);
}
}

Слайд 13

Виртуальные методы

Виртуальный метод – это метод, который может быть замещен в производном

Виртуальные методы Виртуальный метод – это метод, который может быть замещен в производном классе.
классе.

Слайд 14

Абстрактные классы

//Создаем объект родительского класса
Student st = new Student("Козаков", "Костя");
st.ShowInf(); //магистр, бакалавр?
//Запрещаем

Абстрактные классы //Создаем объект родительского класса Student st = new Student("Козаков", "Костя");
создание экземпляров от класса:
abstract class Student

Слайд 15

Абстрактные методы позволяют определить в базовом классе методы без реализации по умолчанию.

Абстрактные

Абстрактные методы позволяют определить в базовом классе методы без реализации по умолчанию. Абстрактные методы
методы

Слайд 16

Геометрические фигуры: Родительский класс Shape и производные Circle, Hexagon.
abstract class Shape
{ public

Геометрические фигуры: Родительский класс Shape и производные Circle, Hexagon. abstract class Shape
abstract void Draw() ; }
Circle circ = new Circle(); //окружность
circ.Draw();
Hexagon hex = new Hexagon(); //шестиугольник
hex.Draw();

Абстрактные методы

Слайд 17

//Этот вывод можно осуществить по-другому, //воспользовавшись полиморфизмом:
Shape[] sh = { new

//Этот вывод можно осуществить по-другому, //воспользовавшись полиморфизмом: Shape[] sh = { new
Hexagon(), new Circle() };
for (int i = 0; i < sh.Length; i++)
{
sh[i].Draw();
}

Абстрактные методы

Слайд 18

Интерфейс – это набор абстрактных типов.
Добавляем класс Triangle() – треугольник и
создадим

Интерфейс – это набор абстрактных типов. Добавляем класс Triangle() – треугольник и
интерфейс IPointy с методом GetPoint().
Наследуем интерфейс IPointy в классах Triangle() и Hexagon():
class Hexagon : Shape, Ipointy
class Triangle : Shape, Ipointy

Интерфейсы

Слайд 19

//определяем метод в классе Hexagon:
public void GetPoint()
{
Console.WriteLine("У этой фигуры 6 углов");
}
//определяем

//определяем метод в классе Hexagon: public void GetPoint() { Console.WriteLine("У этой фигуры
методы в классе Triangle:
public void GetPoint()
{
Console.WriteLine("У этой фигуры 3 угла");
}

Интерфейсы

Слайд 20

//Добавляем вывод углов:
for (int i = 0; i < sh.Length; i++)
{
sh[i].Draw();

//Добавляем вывод углов: for (int i = 0; i { sh[i].Draw(); //проверяем
//проверяем на наличие интерфейса:
if (sh[i] is IPoints)
((IPoints)sh[i]).GetPoint();
}

Интерфейсы