Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Концепции ООП.docx
Скачиваний:
33
Добавлен:
29.03.2016
Размер:
151.79 Кб
Скачать

4. Ооп. Полиморфизм.

ООП – набор концепций и идей, позволяющих осмысливать задачу и найти путь к решению более эффективным и понятным способом.

Принципы ООП

Преимущества:

Инкапсуляция – возможность скрыть внутреннюю составляющую объекта от пользователей.

Наследование – возможность указывать на происхождение класс, свойства и функции заимствуются новым классом.

Полиморфизм – возможность, позволяющая старому коду вызывать новый.

«Один интерфейс – множество реализаций».

Недостатки:

Документирование классов. Поскольку метод может быть переопределён, в документации должно быть указано, что он делает и в каком он месте вызывается.

Инкапсуляцией не следует злоупотреблять. Чем больше логики и данных открыто, тем сложнее его расширять.

Определение: «один интерфейс - много методов»

Одинаковые по сути действия должны иметь одинаковые названия, то есть например если нужно совершить выключение компьютера, то и действие будет называться выключение компьютера. То же самое например и с включением

Виды полиморфизма

Статический полиморфизм

– перегрузка методов

– переопределение методов

Динамический полиморфизм

Статической называют такую разновидность полиморфизма, при которой вызываемая функция явно задается во время компиляции программы.

Перегрузка

Если два метода имеют одинаковое название, то они считаются перегруженными

Виды перегрузки

– Перегрузка в разных классах

– Перегрузка в одном классе

Переопределение методов

Переопределением называют такую перегрузку методов, когда в классах, связанных отношением наследования, существуют методы с одинаковыми именами, количеством и типом параметров Динамической называют такую разновидность полиморфизма, при которой на этапе компиляции задается группа вызываемых функций, из которых в момент исполнения программы автоматически выбирается нужная

5. Методы класса. Конструкторы. Виды конструкторов. Статические методы и поля.

Метод в объектно-ориентированном программировании — это функция или процедура, принадлежащая какому-то классу или объекту.Как и процедура в процедурном программировании, метод состоит из некоторого количества операторов для выполнения какого-то действия и имеет набор входных аргументов.Различают простые методы и статические методы (методы класса):простые методы имеют доступ к данным объекта (конкретного экземпляра данного класса),статические методы не имеют доступа к данным объекта и для их использования не нужно создавать экземпляры (данного класса).

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

Конструктор предназначен для инициализации объекта. Конструкторы делятся на

конструкторы класса (для статических классов) и конструкторы экземпляра класса (для всех объектов класса).

Автоматический конструктор

Circle c = new Circle();

Конструктор по умолчанию

class Circle

{

public Circle() {x = 0; y = 0; r = 1;}

}

Конструктор с параметрами

class Circle

{

public Circle(double r)

{ x = 0; y = 0; this.r = r; }

}

Основные свойства конструкторов.

  1. Конструктор не возвращает значение, даже типа void.

  2. Класс может иметь несколько конструкторов с разными параметрами для разных видов инициализации.

  3. Если не указано ни одного конструктора, или какие-то поля не были инициализированы, то полям присваивается нуль, полям ссылочных типов – null.

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

Статические классы содержат только статические члены (в том числе, и конструктор),

которые хранятся в памяти в единственном экземпляре. Поэтому создавать экземпляры класса для них нет смысла.

Пример:

class Demo

{

static int a;

static int b;

private Demo(){} //закрытый конструктор

static Demo() //статический конструктор

{

a = 10; b = 2; }

public static void Print ()

{

Console.WriteLine("{0}+{1}={2}", a, b, a+b);

Console.WriteLine("{0}*{1}={2}", a, b, a*b);

Console.WriteLine("{0}-{1}={2}", a, b, a-b);

Console.WriteLine("{0}/{1}={2}", a, b, a-b);

}

}

Рассмотрим как происходит работа со статическим классом:

class Program

{

static void Main()

{

//ошибка: создать экземпляр статического класса нельзя

//Demo S=new Demo();

Demo.Print();

}

}

Результат работы программы:

10+2=12

10*2=20

10/2=5

Статические методы и поля

Статические поля

static int x;

MyClass.x = 5;

Статические методы

static int Method () { … }

MyClass.Method()