Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


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




На первый взгляд классы ООП и связанные с ними методы и свойства имеют много общего с процедурным подходом и модульным строением программ. Ключевое различие заключается в следующем:

Класс представляет собой шаблон для создания объектов, состояние которых изменяется со временем.

Пример работы с классами.

Допустим создадим класс, который будет представлять собой копилку. Копилка будет иметь общедоступное (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;

}

}

}

Теперь в случае вызова метода класса Волшебная копилка Разбить копилку с параметром в виде целого числа - будет вызван метод, описанный выше. Если же будет вызван этот же метод, но без параметра – будет вызван метод Разбить копилку, определенный в базовом классе, то есть копилка просто будет разбита и очищена.

 

 

Обзор защищенного бумажного и электронного делопроизводства


Поделиться:

Дата добавления: 2015-04-18; просмотров: 107; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.005 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты