Показать сообщение отдельно
Старый 16.12.2004, 22:06     # 8
Evgeni
Member
 
Аватар для Evgeni
 
Регистрация: 30.10.2002
Адрес: Москва
Сообщения: 278

Evgeni Луч света в тёмном царствеEvgeni Луч света в тёмном царствеEvgeni Луч света в тёмном царствеEvgeni Луч света в тёмном царствеEvgeni Луч света в тёмном царствеEvgeni Луч света в тёмном царстве
Цитата:
Сообщение от Drakosha
ооп как абстракция более понятен человеку.
Абсолюно точно. Просто для человека представить окружающий нас мир очень просто. И иерархию классов выстроить просто.
Дерево ->
Хвойное дерево ->
Сосна.
Ель
Лиственное дерево
Береза
Ольха
И т.д. Причем у Сосна, Ель, Береза, Ольха есть общие и различные свойства и методы. Вместо того чтобы описывать все общие свойства и методы каждый раз заново, ты описываешь их в базовом классе Дерево и _забываешь как они реализованы_. Тебе уже это не важно. Дальше ты просто наращиваешь функционал дочернего класса для конкретного дерева. Когда ты пишешь функции, чаще всего надо понимать и иметь перед глазами весь код. Здесь же реализация от тебя спрятана (в хорошем смысле этого слова). Ты просто знаешь. что умеет этот объект и что его характеризует. Если провести аналогии с русским языком, свойства - это прилагательные, а методы - глаголы. Классы позволяют четко структурировать данные. Но, если у тебя прога в три пейддауна, классы сделают из них пять. Нерентабельно. Однако если у тебя 1000 пейдждаунов, ты в своих функциях заблудишься, кто кого откуда вызывает. А в класса внутренняя реализация не важна. Не важно как хранятся данные. важен только способ получения данных и совершение действий над ними.
Когда ты пишешь процедуры, они рождаются экспромтом по мере необходимости. Потом, когда надо обощить несколько частных функций в одну, придется переправлять половину кода, везде, где они использовались. Классы так писать просто не получится. Ты всегда вначале продумываешь все структуру классов, их взаимоотношение и т.д., а потом только садишься кодировать (по-другому просто не получится). Классы заставляют продумать будущее приложение. Все недостатки и неувязки проекта сразу станут видны. Самое просто применение классов - визуальные объекты (формы, кнопки, тулбары). Но почему бы не сделать класс для жесткого диска - диск, партишен, директория, файл... для партишена делаем свойство label и метод format. причем не надо каждый раз задавать, какой диск ты хочешь форматнуть и какому хочешь сменить имя. Это ты задашь один раз при создании класса. И еще для смены label и получения значения метки тома ты бы писал 2 функции SetLabel(volume) и SetLabel(volume). И каждый раз вызывал бы поочереди эти свойства. В при использовании классов ты просто напишешь во внешней функции value = volume.Label или volume.Label = new_value. Внутренне, это кончено 2 функции. но это абсолютно не важно. В том и прелесть что отделяется понятие использования объекта от его внутреннего состава
__________________
Критиковать - это показывать автору что он делает не так, как делал бы я, если бы умел.
Не торопитесь в АД. Без вас не начнут!
Evgeni вне форума