теория ооп

Предыдущая тема Следующая тема Перейти вниз

теория ооп

Сообщение  Eric-S в Пт Авг 22, 2008 5:11 pm

Глава рассказывает об объектном программировании вообще. Для чего оно нужно и что даёт.
Читать тем, кто понятия не имеет, что это за зверь такой жуткий.
Или тем кто знает и хочет надо мной поржать.


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



что такое ооп

ооп - объектно ориентированное программирование.
Выдумка уже довольно старая. Но в полной мере до сих пор не реализованая. Не только на freebasic, но и на java, который почему-то считаеться флагманом в ооп.
Объект, это точка отсчёта . Это Кирпичик из которого состоит ваша программа.

qbasic это язык процедурного программирования. Там объектами даже и не пахнет. Но его потомок visual basic уже объектноориентированный язык. Хотя и в нём встречались очень странные вещи.
Трудно перевести поезд с одних рельс на другие, особенно если между ними огромные различия.
Но это повсеместно практикуеться, так как разработчики видят необходимость в таких изменениях.
И freebasic не избежал этой судьбы.


объект

Что такое объект? А разве вы не знаете?
Объект это какой-то предмет или явление... Короче объектом можно назвать почти всё.
Знаете, как говорят оперативники? "иду за объектом", "вступил в контакт с объектом", имея ввиду подозреваемого или охраняемого человека.
Но строители "работают на объекте", а это может быть сараем или олемпийским комплексом.
Короче объектами называют всё подряд, вот и в программировании почти также.

У объектов могут быть различные свойства.
человек "высокий", "светловолосый", "сильный"....
машина "красная", "легковая"...

объект умеет что-то делать, владеет какими-то [/i]методами[/i].
человек умеет "бегать", "прыгать", "говорить"...
машина "ездит", "сигналит"...


классы

Знаете, как в биологии, есть царства животных, класс млекопетающих, а в нём куча всяких разных зверушек, отмышки до слона.
Или в школе, есть разные классы, в которых учаться детишки.
Класс объеденяет объекты имееющие нечто общее между собой.
Животные, в классе млекопитающих, кормят детёнышей молоком и у них горячая кровь.
детишки из 1 класса, учаться читать и писать.

Класс это исходное (обобщающее) описание объекта. Объекты из одного класса имеют сходные свойства и одинаковые методы.



свойства

Животные из класса "млекопетающих" обладают огромным множеством свойств: рост, вес, сила, цвет, ум.

Но отдельно взятый объект имеет разные значения свойств.
мыш: маленькая, лёгкая, серая, тупая.
слон: большой, тяжелый, серый, тупой.
лиса: небольшая, нетяжелая, рыжая, хитрая.
человек: средний, средний, зелёный, думает что очень умный.

И всё это объекты одного класса! Но они такие разные! А разница их только в свойствах. Которые по сути являються переменными.

Свойство это как глобальные переменные внутри вашего класса.



методы

Как я уже упомянул выше, метод это то что умеет делать объект принадлежащий какому-то классу.

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

Коровы умеют есть траву, а вот волки нет. Хотя человек жрёт всё подряд. Уменее, точнее возможность что-то делать заложена в объект изначально.

В программировании метод это функция. Функция не меняеться, но она возвращает разные результаты в зависимости не только от переданных параметров, но и от свойств объекта.
Функции и процедуры описанные в классе называються методами.



конструктор

Создание объекта бывает очень сложным. Долгий путь проходит детёныш от зородыша к взрослой особи. А в начале это чистый лист анкеты, в которой все ячейки пусты.

Класс, это всего лишь шаблон, по которому строиться объект. Но не всё детенышу дают родители.

Конструктор это процедура, которая заполняет некоторые свойства объекта и выполняет подготовительные работы.
Захватить память для массива данных, прочитать настройки из файла, подключиться к базе данных и другие действия которые нужно проделать с объектом, перед тем как программист начнёт заполнять или изменять его свойства.

Конструктор автоматически начинает выполняться, когда создаёться новый объект. Берёться чистый "экземпляр класса" и даздравствует жизнь!


деструктор

А эта процедура противоположна конструктору. Конструктор это жизнь, а деструктор это смерть. Но умирать надо красиво и с музыкой. Но кто положит цветы на могилку, и вообще кто её выкапает для начала?

Деструктор автоматически выполняеться, когда объект удаляют. Был открыт файл, так сохраним данные и закроем файл, была подключена база данных от неё нужно отключиться. Занятую память нужно освободить.


для чего же всё таки нужен ооп

Всё делать самому это очень даже хорошо! Это правильно и полездно. Но вы не сможете полностью сделать всё сами!

Вот вы кликаете мышкой по ссылке. Ваш мозг даёт команду, что нужно кликнуть. А дальше в игру вступает уже ваш мозжечёк, глазные нервы и мышци руки. Прицел курсора наводиться на нужную ссылку, а палец давит на нужную кнопку.

Или вот другой пример. Садитесь вы в машину, поварачиваете ключь зажигания, давите на педаль, крутите руль. Под копотом происходит очень многое. И стартёр тарахтит, инжектор фырчит, да ещё и какой-то винтилятор крутиться. Вам это нужно знать, чтобы просто куда-то поехать? А может быть будем вообще всё это делать сами, ручками? Тогда уж велосипед будет удобнее. В нём вы делаете всё сами!

Ну да, да. Я знаю, что в процедурном программировании это тоже не проблема. Каждое действие выноситься в процедуру или функцию, которой мы передаём разные параметры.

А что делать если этих параметров очень много? Может быть их сотня или даже тысяча! Каждый раз таскать их просто не реально. Ну да, их можно сделать просто глобальными. А если этих глобальных переменных у вас уже и так целая куча?
А ведь им всем нужно придумать ещё и хорошее название. Нужно все эти переменные и функции согласовать друг с другом.

Это можно сделать. А теперь представим себе такую ситуацию. Нужно из нескольких программ сделать одну. Понадёргать функций, немного подправляя находу их названия и имена глобалных переменных. Можно просто сойти сума.

Объектное программирование призвано решить эти проблемы. Берёться класс, из него получаються объекты и производяться нужные манипуляции. Свойства и методы объекта, доступны только через сам объект. А его имя может быть любым возможным для имени переменной. Объект становиться пультом для вашего автомобиля. Рулите, а что твориться под копотом уже не важно, главное результат.

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


заключение

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

На самом деле это далеко не всё. Но для начала хватит.

А практика, смотрите классы, свойства, методы и объекты


Последний раз редактировалось: Eric-S (Пт Авг 22, 2008 8:55 pm), всего редактировалось 1 раз(а)

Eric-S

Сообщения : 738
Дата регистрации : 2008-08-06
Возраст : 34
Откуда : Россия, Санкт-Петербург

Посмотреть профиль http://eric50.narod.ru

Вернуться к началу Перейти вниз

Re: теория ооп

Сообщение  tux в Пт Авг 22, 2008 6:50 pm

Офигенные сравнения)))
Я думаю доступней будет сложно написать, принципы поймет даже валенок))
avatar
tux

Сообщения : 365
Дата регистрации : 2008-04-06
Возраст : 29
Откуда : Сибирь

Посмотреть профиль http://tux.nsk.ru/

Вернуться к началу Перейти вниз

Re: теория ооп

Сообщение  Gena в Пт Ноя 07, 2008 11:03 am

Дааа..... Себя помню: смотрю в книгу - "деструктор" эээээ... это как?
Хорошо объяснил - спасибо.

Gena

Сообщения : 182
Дата регистрации : 2008-11-05
Возраст : 23
Откуда : Москва

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: теория ооп

Сообщение  Eric-S в Пт Ноя 07, 2008 5:48 pm

Спасибо!
Мне самому понравилось.
Хорошо, да не всё.
К сожалению ооп не полностью реализован во freebasic. И по сему многие понятия, просто пропустил.

А объяснения "на пальцах" имхо доходчивее, чем любые книжные научные завороты. Впрочем я могу и так завернуть.

Eric-S

Сообщения : 738
Дата регистрации : 2008-08-06
Возраст : 34
Откуда : Россия, Санкт-Петербург

Посмотреть профиль http://eric50.narod.ru

Вернуться к началу Перейти вниз

Re: теория ооп

Сообщение  Gena в Вс Ноя 09, 2008 7:29 pm

Было бы более понятно, если будут приведены примеры (как с оператором Туре в другой теме)
Понял-то я понял, но только в теории, а на практике... Если не сложно - приведи примеры.

Gena

Сообщения : 182
Дата регистрации : 2008-11-05
Возраст : 23
Откуда : Москва

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: теория ооп

Сообщение  Eric-S в Вс Ноя 09, 2008 9:32 pm

А все примеры в соответствующей теме.
Здесь же разъяснение терминов, если они непонятны.

Про ооп читать там
классы, методы, свойства и объекты
Если чего непонятно в практике, то спрашивайте именно там.

Я понимаю, когда на меня ругаються за дело, но русским языком написано "теория", и дана ссылка на "практику"!

Eric-S

Сообщения : 738
Дата регистрации : 2008-08-06
Возраст : 34
Откуда : Россия, Санкт-Петербург

Посмотреть профиль http://eric50.narod.ru

Вернуться к началу Перейти вниз

Re: теория ооп

Сообщение  ShenZN в Пн Ноя 10, 2008 7:34 pm

Да, статья действительно интересная Very Happy
Если б не было написано "Теория ООП", скорей всего подумал бы что это по зоологии чем по программированию статья Very Happy

Желаю и дальше продолжать в таком духе Very Happy Спасибо!

ShenZN

Сообщения : 155
Дата регистрации : 2008-02-18
Откуда : Ukraine

Посмотреть профиль http://lodestar-game.narod.ru

Вернуться к началу Перейти вниз

Re: теория ооп

Сообщение  Eric-S в Вт Ноя 11, 2008 1:49 pm

Ну зоология, хе-хе. Помнится классификацию проходили классе в шестом. Так, что на статью это не тянет.

Eric-S

Сообщения : 738
Дата регистрации : 2008-08-06
Возраст : 34
Откуда : Россия, Санкт-Петербург

Посмотреть профиль http://eric50.narod.ru

Вернуться к началу Перейти вниз

Re: теория ооп

Сообщение  ShenZN в Вт Ноя 11, 2008 9:29 pm

Объектная зоология и ее свойства

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

Животные, в классе млекопитающих, кормят детенышей молоком и у них горячая кровь.

Животные из класса "млекопитающих" обладают огромным множеством свойств: рост, вес, сила, цвет, ум.

Но отдельно взятый объект имеет разные значения свойств.
мышь: маленькая, легкая, серая, тупая.
слон: большой, тяжелый, серый, тупой.
лиса: небольшая, нетяжелая, рыжая, хитрая.

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

Коровы умеют есть траву, а вот волки нет. Хотя человек жрет все подряд. Уменее, точнее возможность что-то делать заложена в объект изначально.

Долгий путь проходит детеныш от зародыша к взрослой особи. А в начале это чистый лист анкеты, в которой все ячейки пусты.

Как по мне, в полне потянет на статью, а может и вовсе на докторскую Very Happy

Very Happy Very Happy Very Happy

ShenZN

Сообщения : 155
Дата регистрации : 2008-02-18
Откуда : Ukraine

Посмотреть профиль http://lodestar-game.narod.ru

Вернуться к началу Перейти вниз

Re: теория ооп

Сообщение  Eric-S в Ср Ноя 12, 2008 3:38 pm

lol!
Уделал! И причём моими же словами. Ну и не лень было?

Eric-S

Сообщения : 738
Дата регистрации : 2008-08-06
Возраст : 34
Откуда : Россия, Санкт-Петербург

Посмотреть профиль http://eric50.narod.ru

Вернуться к началу Перейти вниз

Re: теория ооп

Сообщение  ShenZN в Ср Ноя 12, 2008 4:48 pm

Это конечно же была шутка Very Happy Но твои знания в зоологии (cat alien pig cyclops rendeer albino elephant) впечатляют Very Happy.

P.S.

Статья зачетная Very Happy

ShenZN

Сообщения : 155
Дата регистрации : 2008-02-18
Откуда : Ukraine

Посмотреть профиль http://lodestar-game.narod.ru

Вернуться к началу Перейти вниз

Re: теория ооп

Сообщение  Eric-S в Сб Ноя 15, 2008 3:05 pm

Понятно что шутка. Но я думаю мой школьный учитель биологии тоже поржал бы. Ещё тот хохмач был.

Eric-S

Сообщения : 738
Дата регистрации : 2008-08-06
Возраст : 34
Откуда : Россия, Санкт-Петербург

Посмотреть профиль http://eric50.narod.ru

Вернуться к началу Перейти вниз

Re: теория ооп

Сообщение  Спонсируемый контент


Спонсируемый контент


Вернуться к началу Перейти вниз

Предыдущая тема Следующая тема Вернуться к началу


 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения