Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2015.04.05;
Скачать: [xml.tar.bz2];

Вниз

Принципы ООП   Найти похожие ветки 

 
Пашка.   (2014-08-19 11:43) [0]

Подскажите плиз статью, в которой понятно и доходчиво объясняются принципы ООП, так что даже домохозяйка поняла бы.


 
имя   (2014-08-19 12:38) [1]

Удалено модератором


 
доход чиво   (2014-08-19 13:52) [2]

домохозяйка уже вовсю программирует процедурно?
тогда надежда еще есть
http://rsdn.ru/article/Delphi/Delphi_7_03.xml
и пробуйте другое (просто гуглите), с первого раза может не зайти, да и повторение - мать учения
практика обязательна!
пусть напишет класс, объединяющий возможности двух стандартных (от одного пускай наследует, а объект второго создаёт в конструкторе)


 
junglecat   (2014-08-19 14:01) [3]

> принципы ООП, так что даже домохозяйка

тогда подойдет пример с овощами: помидором и огурцом


 
DVM ©   (2014-08-19 14:32) [4]


> тогда подойдет пример с овощами: помидором и огурцом

ГМО помидор это класс хэлпер для помидора с методами от иных растений.


 
DVM ©   (2014-08-19 14:33) [5]

Или даже множественное наследование


 
имя   (2014-08-19 15:11) [6]

Удалено модератором


 
имя   (2014-08-19 15:38) [7]

Удалено модератором


 
KilkennyCat ©   (2014-08-19 16:21) [8]

что такое "плиз статья"?


 
имя   (2014-08-19 17:06) [9]

Удалено модератором


 
имя   (2014-08-19 17:07) [10]

Удалено модератором


 
alexdn ©   (2014-08-19 17:44) [11]

Наследование
инкапсуляция
полиморфизм
вот и вся статья


 
Mystic ©   (2014-08-19 18:05) [12]

Продвинутые возможности создания новых типов на основании уже имеющихся.


 
имя   (2014-08-19 18:46) [13]

Удалено модератором


 
megavoid ©   (2014-08-19 23:55) [14]

Ищи амерские статьи в нашем переводе, там, где стол употребляют в качестве примера, они самые наглядные.
Вот есть у тебя стол обычный, 4 ноги да столешница. Можно записать текстом - стол - это 4 ноги и столешница, готов объект, абстракция. Можно наделать много разных столов - с разной длиной ног, разной площадью, лаком покрыть первоначальный стол - наследование. Какие бы ни были столы - их всегда можно передвинуть с места на место - полиморфизм. На любой стол можно поставить тарелку - инкапсуляция. Ну и так далее, по-домохозяйкински...


 
grossm ©   (2014-08-20 00:54) [15]

заходишь на:
http://rutracker.org/forum/viewtopic.php?t=3527301
и скачиваешь.
Можешь открыть 13 главу.Там понятно объяснят.


 
grossm ©   (2014-08-20 00:59) [16]


> Пит12   (19.08.14 18:46) [13]
>
> если ты не понимаешь зачем нужно ООП - то тебе оно не нужно.
>

Я с Вами не согласен.По себе знаю.Читал книги по делфи и ничего не понял.Объясняли - хоть застрелись.Про ООП было мало написано и небыло показано на простых примерах,зачем оно нужно.То етсь после каждой главы,оставались пробелы.Известно,что теория закрепляется практикой.Во многих книгах,не представляется такой возможности.Это и затрудняет этап обучения.И потом,как можно понять,что такое ООП,если это он и пытается изучить?


 
grossm ©   (2014-08-20 01:04) [17]

И еще не пойму одно,отчего же на форумах,нормально не отвечают на подобные вопросы?Либо отвечают,но слишком(опять же) непонятно!


 
Павиа   (2014-08-20 06:29) [18]

ООП тема сложная и неоднозначная. Сложная из-за абстракции. Не все могут мыслить абстрактно. И примеры если приводить кодом, то они будут на много листов. А пользы от них мало.


 
junglecat   (2014-08-20 08:55) [19]

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

инкапсуляция - это, скорее, холодильник )


 
имя   (2014-08-20 09:32) [20]

Удалено модератором


 
DVM ©   (2014-08-20 10:29) [21]


> grossm ©   (20.08.14 01:04) [17]

Ооп для чайников.

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

Ооп лучше всего познавать в сравнении с другими подходами.

Итак, начнем с подхода самого первого…

Представьте себе что имеется некоторое множество девушек. Это область данных. Что можно с ними делать? Правильно – любить. Любовь – это процедура. Поскольку разные люди могут любить одну девушку и разными способами, то процедур может быть много. Таким образом, одна процедура, полюбив девушку кладет ее обратно в область данных, чтобы ее могли любить другие процедуры. Так выглядит устаревший подход к программированию, где нет разделения данных. Данные (девушки) находятся в глобальном пользовании. Иными словами – полный беспредел (хоть и заманчивый, с другой стороны). Если одна из процедур содержит ошибку (имеет венерические болезни, например), она искажает данные (заражает девушку) и от этого могут страдать другие процедуры (они тоже заразятся). Поэтому такой подход никого не устраивал. Его заменили на структурный, где появилось понятие локальная девушка.

Структурное программирование.

Итак, глобальные девушки сохранились, их по-прежнему могут любить все процедуры. Однако, у каждой процедуры есть свои собственные девушки, которые она может использовать как хочет и столько времени, сколько ей это необходимо. Она может их искажать на свое усмотрение, при этом другие процедуры никаким образом не пострадают. Это позволило программистам независимо друг от друга разрабатывать процедуры, единственная связь которых происходит через параметры и возвращаемые значения. Например, программист пишет процедуру

babies CreateBabies(int Number)

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

babies CreateBabies(int Number)
{
   girl Girls[9];
   …
}


программист задействовал для создания детей массив из 10 локальных девушек. При этом она не зависит ни от каких значений других переменных (если грамотно ее написать).
Следуя нормам нравственности и этикета, рекомендуется как можно реже пользоваться услугами глобальных девушек. Это плодит неразбериху и является источником потенциальных проблем.

Дальнейшей вехой эволюции стало модульное программирование, но мне про него лень писать. Перейдем к главному объекту нашего рассмотрения – объектно-ориентированному программированию.

Основные концепции ООП.

Описанные ранее процедуры страдали примитивностью. Все мы живом в реальности и знаем, что локальную девушку не так то и просто любить. Для этого приходится совершить некоторые, порой очень изощренные действия. Например, сводить в кино, театр, музей, концерт; дарить различные подарки; говорить всякие милые нелепости; дарить цветы; общаться с родителями девушки; пить с ее папой; оказывать всяческую помощь в делах и т.д. и т.п. Все указанные действия мы теперь будем называть методами (что очень логично – такое название взято из словосочетания: методы ухаживания). Так вот, написать универсальные методы для любой девушки довольно сложно, поэтому приходится писать свои методы для конкретной девушки. Почему? Потому что методы зависят от свойств девушки: ее характера, цвета волос, возраста, социального положения, душевного настроя, вероисповедания, мировосприятия. Поскольку программисты - народ очень хитрый и логичный, они решили объединить данные и методы, обрабатывающие эти данные. Результат объединения назвали объектом (object, от английского словосочетания object of courting – объект ухаживания). Например, совершенно абстрактная девушка может выглядеть следующим образом

Type MyGirl=object
   {Свойства объекта MyGirl}
   Religion:TReligion;
   Character:TCharacter;
   Age: Integer;
   SoulType:TSoulType;
   SocialStatus:TSocialStatus;
   Attitude:TAttitude;
   Parents:TParents;
   {Методы}
   Procedure GoToTeatre;
   Procedure MakeAPresent(MoneyLimit:Integer);
   Procedure DrinkWithFather(Volume:Integer);
   Procedure TalkWithMother(Time Integer);
   Procedure Sleep;
   Procedure UtiPutiPuti(LevelOfMeaning:integer);
End;


Так вот, это объект с его методами. Методам (то, что начинается со слов procedure) доступны все свойства (т.е. Religion, Age, Character, Attitude, SocialStatus, Parents и т.д.). Такое объединение свойств с методами оказалось очень удачным и называется инкапсуляцией. Если же с этой девушкой не повезло (бывает такое, что локальные девушки порой жестоки и бессердечны), можно использовать такую парадигму ООП как наследование. Эта парадигма позволяет наследовать свойства одного объекта другому. Судите сами – у другой девушки будут все те же свойства: возраст, вероисповедания, социальный статус и т.д. Они могут иметь другое значение, но присутствовать они все равно будут. Возможно, придется изменить некоторые методы (может быть все, может быть только один), а другие могут остаться без изменений. Тогда можно провернуть следующий финт:

MyNextGirl=class(MyGirld)
Procedure GoToTeatre; override;
End;


Тем самым, мы наследовали объект MyNextGirl от предыдущей локальной девушки. И заменили в нем метом GoToTeatre, который может выглядеть так:

MyNextGirl.GoToTeatre
Begin
   RedirectToRockConcert;
End;


http://forum.grabli.net/index.php?s=662b2b7e9adec83f4ec3c7429c31713f&showtopic=6164


 
Пашка.   (2014-08-20 21:02) [22]

Всем спасибо



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2015.04.05;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.52 MB
Время: 0.002 c
15-1407771480
Пит
2014-08-11 19:38
2015.04.05
Windows 7 на MacBook Pro


15-1408134602
Юрий
2014-08-16 00:30
2015.04.05
С днем рождения ! 16 августа 2014 суббота


15-1408554196
Пашка.
2014-08-20 21:03
2015.04.05
Зачем нужны Regexp-ы?


15-1408434187
Пашка.
2014-08-19 11:43
2015.04.05
Принципы ООП


15-1408566603
Юрий
2014-08-21 00:30
2015.04.05
С днем рождения ! 21 августа 2014 четверг





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский