КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Преимущества ООПНа первый взгляд классы ООП и связанные с ними методы и свойства имеют много общего с процедурным подходом и модульным строением программ. Ключевое различие заключается в следующем: Класс представляет собой шаблон для создания объектов, состояние которых изменяется со временем. Пример работы с классами. Допустим создадим класс, который будет представлять собой копилку. Копилка будет иметь общедоступное (public) поле – цель накопления, скрытое поле (private) – накопленная сумма, и общедоступные методы – положить в капилку и разбить капилку. То есть нельзя посмотреть количество денег не разбив и не опусташив копилку. Класс будем писать на языке C++. class Kopilka { public string Tcel_Nakopleniya; private Summa;
public void Dobavit_v_kopilku(int dob) { Summa += dob; } public int Razbit_Kopilky() { int buf = Summa; Summa = 0; return buf; } }; Теперь мы можем создать экземпляр класса – объект. Kopilka *Kopilka1 = new Kopilka(); Мы можем получить доступ к полю Tcel_Nakopleniya: Kopilka1->Tcel_Nakopleniya = “Коплю на машину”; Но получить доступ к полю Summa мы не можем так как оно задано с модификатором private. В данном случае доступ к этому полю имеет только метод класса Razbit_Kopilky, который вернет сумму находящуюся в копилке, но при этом копилка будет очищена. Это и есть применение инкапсуляции. Мы можем легко добавить некую сумму в копилку: Kopilka1-> Dobavit_v_kopilku(100);
Теперь наследуем этот класс. Класс Прозрачная копилка наследует базовый класс Копилка и будет иметь те же поля и методы. Но так как это прозрачная копилка мы добавим метод Проверить сумму, который будет возвращать значение закрытого поля Сумма.
class Prozrachnaya_Kopilka : Kopilka { Public int Proverit_Summu() { Return Summa; } }
Теперь продемонстрируем полиморфизм. Создадим класс Волшебная копилка, которую можно разбивать частично (и забирать при этом из нее часть средств). Если запрошенная сумма из копилки будет превышать имеющуюся в ней, будет выдана имеющаяся. Волшебная копилка будет наследоваться от класса Копилка.
class Volshebnaya_Kopilka : Kopilka { public int Razbit_Kopilky(int s) { if (Summa >= s) { Summa -= s; return s; } else { int buf = Summa; Summa = 0; Return buf; } } } Теперь в случае вызова метода класса Волшебная копилка Разбить копилку с параметром в виде целого числа - будет вызван метод, описанный выше. Если же будет вызван этот же метод, но без параметра – будет вызван метод Разбить копилку, определенный в базовом классе, то есть копилка просто будет разбита и очищена.
Обзор защищенного бумажного и электронного делопроизводства
|