• Авторизация


Основы объектно-ориентированного программирования 02-05-2006 02:16 к комментариям - к полной версии - понравилось!


Человек не способен создать ничего, что бы не соотвествовало его видению мира.

Любая теория, любая структура, любая система или наука лишь отражают абстракции его собственного мозга.

Даже железяки создаются им по собственному образу и подобию.

И программируются через призму концептуального знания.

Хочет человек того или нет, видит он мир таким образом:

Классы


Класс - основное понятие объектно-ориентированного программирования. Класс - это шаблон. Шаблон описания предмета или явления. Предусмотрения для него свойств и методов.

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

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

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

Объекты


Объект - это реализация класса. Каждый раз разная. Каждый раз уникальная. Даже две одинаковые кружки - это две совершенно разные кружки. А по сути объект - это область памяти, не более того. Выделенная область, с адресом того места, где сидит объект. Две области - две кружки. Три области - три кружки.

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

Вот тут важный момент, над которым спорят все философии мира. Дело в том, что объекта нет. Давайте повторим. Есть область памяти. Есть свойства и методы, расписанные в этой области. Объекта нету. В зависимости от того, от какой до какой ячейки мы рассматриваем единицы и нули, мы рассматриваем разные объекты.

Ссылки на объекты


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

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

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

Класс тоже имеет имя для того, чтобы мы могли к нему обращаться и создавать реализации класса - объекты.

Выводы


Кружки вообще - это класс. Ноумен. Придумайте сами еще какие-нибудь философские понятия.

Вот эта кружка со смешными цеплятами на боку - объект класса "кружки". Феномен. Ну и см. выше.

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

Но мы можем говорить о кружках вообще, используя имя класса. Никаких ссылок на класс мы получить не можем. Ну это и понятно.

Выводы? Выводы делайте сами. У меня их нет.
вверх^ к полной версии понравилось! в evernote
Комментарии (32): вперёд»
Linzza 02-05-2006-17:17 удалить
вывод: любой пример написанный человеком, иллюстрирующий то "как человек видит мир" имеет погрешности, недосказанности, не отражает положение вещей в полной мере для каждого субъекта и не отражает абсолютную картину происходящего.
Другими словами, к любой словесно выраженной теории или примеру можно задать вопросы, показывающие его несовершенство или просто его разрущающие.
описание спуска с горы на сноуборде и сам спуск - разные вещи. то же самое: концепция пустоты, описанные постфактум ощущения и осознания и сама пустота - это разные вещи.
Linzza 02-05-2006-17:21 удалить
вывод два, вытекающий из первого предложения.
реализация возможных к созданию явлений, действий и тд. напрямую зависит от широты и глубины "обзора" конкретного человека.
Linzza 02-05-2006-17:22 удалить
вывод три. поняв, наконец, как "оно работает", и увидев "это" в каждом явлении - выйти за границы и перестать заниматься фигней.
Linzza 02-05-2006-17:24 удалить
"Даже две одинаковые кружки - это две совершенно разные кружки."

невозможно войти в одну и ту же воду дважды.
Linzza 02-05-2006-17:26 удалить
вывод четрые: кто-то покусился на кружку с цыплятами :D
strannost 02-05-2006-19:00 удалить
Linzza, ага, понравилась игра в выводы? Еще хочешь? :)

Вывод первый остался за пределами моего понимания. Долго размышляла, но не дошло, к чему это. Если кто понял, объясните.

Второй - аналогично. Тупею, что ли?...

Третий - а, так ты про "это"? :D

Тритейсполовиной - ну ты знаешь, что я по поводу этой фразы думаю.

Четвертый - ага, сразу на обе кружки :)
strannost 02-05-2006-19:05 удалить
zen_riot, ну уже классно, что такой длинный текст кто-то смог прочитать :)
Linzza 02-05-2006-20:10 удалить
strannost, ну так а чем ещё заняться многодетной загруженной домохозяйке между созданием новых вселенных и игрой в люксор? :D
ждала первого комментария.
объяснять выводы не буду. хотя нет. по поовду одной и той же воды - просто хотела показать тебе, что ты, в общем, написала ту же фразу, только не о "воде", а об "объектах". в общем, там в комменте у меня знак равенства пропущен. насколько я помню, разговор у нас с тобой когда-то был не о том, что смысл этой фразы=false, а о том, что зная данное положение - стоит ли каждый раз заморачиваться и помнить об этом всё время.
касательно остальных выводов - ну хз. говорят, меньше буков - глубже смысл :D видимо, опять много буков, которые тебя увели от смысла. будем работать :)
strannost 02-05-2006-20:16 удалить
Не, Ольк, я написала не то же самое. И в тот раз тоже пыталась сказать, что в моем понимании смысл этой фразы <>отнюдь не в том, что два предмета или явления - это всегда разные реки. Я наоборот говорила о том, что одинаковые частенько. То есть - объекты одного класса, как теперь можно сформулировать :) Реки - класс. Разные ситуации - объекты. Это я тогда имела в виду.

А может, буков было мало? Ну да работайте, конечно. В конце концов, русский алфавит - один из самых объемных алфавитов в мире :)

Прибедняешься, ишшо не многодетная :)
Linzza 02-05-2006-21:27 удалить
слушай, я пхп плохо владею. могу обшибаццо. но.
реки - класс.
ситуации - объекты.
объект - это реализация класса.
каждый раз разная.
каждый раз - уникальная.
даже два одинаковых внешне объекта - разные. уникальные.
объект - это реализация класса.
объект - это ситуация.
ситуация - это реализаця класса.
класс - это река.
любая ситуации происходящая в реке - уникальная. даже если похожа на предыдущую как две капли воды.
собственно, каждая капля воды в этой поговрке именно уникальна :)

но если не хочешь, повторяться не будем))
так или иначе, для меня эта притча о том, что нет двух идентичных явлений. как бы сильно это не казалось. ты в ней видишь, судя по твоему отношению, что-то, что тебя не устраивает. я не вижу.
strannost 03-05-2006-00:39 удалить
Повторяться не будем :) РНР не является объектно-ориентированным языком. Хотя классы там с какой-то из версий добавлены. :)
strannost 03-05-2006-00:40 удалить
Да, а цепочка все-таки неверна.

Но повторяться не будем :D :D :D
strannost 03-05-2006-00:48 удалить
Хотя нет, не могу не вякнуть, ну не могу!!! :DDDDDD В общем, я имела в виду, что реки - это классы. Разные реки - разные классы. Для одного класса можно сделать миллионы реализаций. Можно иногда входить в одну и ту же реку. Пускай эта реализация находится в другой области памяти (в другом времени, в другом месте). Она может непринципиально отличаться. Но все равно является объектом того же класса, у нее все те же методы, те же свойства. Я могу знать заранее, как она будет проходить и как разрешится. Могу не знать, если не знаю структуру класса, но это уже целиком мои проблемы. Могу перепутать с какой-нибудь другой, но это опять же мои проблемы. На объективном уровне это - реализация той же самой реки :) То есть я вошла в ту же самую реку.

Это не приглашение к спору, а попытка еще раз объяснить сказанное тогда. А то мало ли... :D
Linzza 03-05-2006-09:59 удалить
тьфу, анька. ты говоришь именно то, что в этой притче написано. и каждый раз именно то, что там имеется в виду, и повторяешь. и тем не менее уверена, что говоришь что-то отличное.
потрясающая запутанность. я прям не нарадуюсь. :D
и цепочка, кстати, верна. ггг.
strannost 03-05-2006-14:21 удалить
Linzza, и это при том, что я неоднозначно утверждаю, что в одну и ту же реку войти можно и не раз? :)
zen_riot 03-05-2006-15:22 удалить
Исходное сообщение strannost: zen_riot, ну уже классно, что такой длинный текст кто-то смог прочитать :)

Твои посты меня всегда очень заинтриговывают.
Я после них бываю в глубоких раздумьях, как после штудированеия всей древнегреческой философии+)

LI 5.09.15
Linzza 03-05-2006-15:52 удалить
strannost, да. потому что недопонимание терминологическое, а не по "сути".
есть река. предположим, дон. естественно, ты можешь в неё войти сколько угодно раз. и сказать потом: "да я в этот ваш дон раз пятсот входил".
но что такое река? когда так говорят, имеют в виду не столько канал в земле, берега и живность, сколько непосредственно воду. а она всё время движется. утекает. одна сменяет другую. и если человек в 10:00 входит в один кубометр воды. то в 10:05 он войдет уже в другой кубометр воды. немаловажный нюанс в том, что постоянного кубометра тоже нет, опять же по причине того, что вода всё время движется. нет в этой воде ничего затвердевшего, жесткого. кубометр воды не останавливается. когда человек входит в воду - она не замирает вокруг него, а утекает дальше.
к тому же речь в этой притче (скорее, поговрке, если уж на то пошлО) идет не о природном явлении "река" и не о её основной составляющей - "вода", а о любых ситуациях, в которые человек попадает в жизни. так или иначе - всё это - жизнь (класс). но явления (объекты) этой жизни - уникальны. хотя бы по одному параметру. а глубина и количество отличий, они же - совпадения, готовность или не готовность к явлениям какого-то конкретного человека, количество имеющейся у него информации об этом предмете - это всё, как ты правильно сказала, целиком проблемы этого человека.
strannost 03-05-2006-23:32 удалить
Linzza, жизнь - это не класс. В этом месте и неправильно.

Жизнь - тоже объект. Конкретная реализация некоего абстрактного шаблона, который мы можем вывести, теоретизируя и анализируя это конкретное проявление. Ты снова пытаешься перемешать понятия :)

Я даже подозреваю, где момент путаницы. По-твоему, событие А - объект, события В, С и т.д. - объекты, значит они составляют класс? Нет, дело в том, что любой объект может иметь в качестве свойства другие объекты или даже массивы объектов. Объяснять, что это такое, думаю, не надо?

То есть любой объект класса имеет поля (задаваемые свойствами). Поля должны иметь тип. Что такое тип поля? Это класс. Тот класс, по шаблону которого будет конструироваться это поле. Скажем, тип "человек" (=объект класса человек). Или тип "событие". Массивы таких типов предусмотрены в классе жизнь. Значит у этой конкретной жизни (ака реализации абстрактного класса) будут поля таких же типов. Примерно понятно?
strannost 03-05-2006-23:34 удалить
А про воду повторяться не хочу. Про то, что есть отличия принципиальные, а есть непринципиальные - щепочки, там, помнишь же все.
Linzza 04-05-2006-00:35 удалить
Ы.
у тебя в начале коммента - жизнь это не класс. а в конце коммента уже класс.
понятно, анют. всё понятно.
особенно понятно следующее:
1. зацепилась ты как раз за то место, которое для этого и было предназначено. то есть, самое слабое в комменте.:) мне, честно говоря похуй - класс жизнь или не класс.:) я имела в виду жизнь как явление вообще. бытие. а не конкретно кем-то прожитую жизнь. но это-то как раз момент второстепенный. суть ты благополучно пропустила.
2. принципиальные отличия или нет - это похуй. главное, что отличия есть. всё. дальше ситуацию эта поговорка не рассматривает. однако, как и все краткие наставления, она подразумевает, что человек её обдумает настолько глубоко, насколько сможет.
в поговорке говорится (внимание): "не существует двух идентичных ситуаций". в ней не говорится о том, что делать, куда смотреть, париться по этому поводу - или нет, и не указывается степень различности ситуаций. просто констатируется факт - всё ситуации разные. две абсолютно одинаковые кружки не одинаковы потому что имеют разные координаты положения в пространстве. для кого-то это непринципиально. для кого-то другого - огромной важности момент. речь вообще не об этом. просто они разные.
3. нет, анют. всё гораздо проще. Если событие А - объект. и событие Б - объект - то они изначально разные. просто потому что у одного в качестве маркера указана буква А, а у второго - Б. это первая разница, которая бросается в глаза.
не важно в чем заключается отличие, понимаешь? речь о том, что оно в принципе есть всегда. остальные умозаключения - это уже область практического применения.
Linzza 04-05-2006-00:38 удалить
блин, ну куда уж проще-то.
всё, анько. больше я ничего не комментирую по этой теме. сказано максимально ясно всё, что можно было сказать. :)
strannost 04-05-2006-14:46 удалить
у тебя в начале коммента - жизнь это не класс. а в конце коммента уже класс.

Кружка с цыплятами - это не класс, а объект, реализация класса "кружка". То же и с жизнью. И с жизнью не отдельного человека, а с бытием, да. Неважно, что нет (или не видно) других реализаций. Это не повод объект назвать классом :)

А по поговорке у нас не столько разногласия в сути толкования были, сколько в том, что я ее считала бессмысленной, ненужной и даже местами вредной. Поэтому пункты 1, 2, 3 не стала даже читать, если честно. Чего копаться, в самом деле?
Linzza 04-05-2006-19:32 удалить
strannost, где я хоть раз написала, что кружка - это класс?)) ты мне пытаешься втюхать какие-то привычные, много раз виденные у людей стереотипы или заблуждения? или просто не внимательно читаешь?))

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

что касается поговорки - считать её каждый человек может какой угодно. у каждого есть право на свое мнение. так что вопрос снят.:)
strannost 04-05-2006-19:49 удалить
где я хоть раз написала, что кружка - это класс?)) ты мне пытаешься втюхать какие-то привычные, много раз виденные у людей стереотипы или заблуждения? или просто не внимательно читаешь?))

Оль, перечитай внимательнее, не увлекайся. Я так не писала.
Linzza 04-05-2006-20:20 удалить
"Кружка с цыплятами - это не класс, а объект, реализация класса "кружка"."

это я прочитала ещё в посте. и нигде ни разу не обозвала конкретную кружку - классом.

что касается жизни, тут мы, анют, опять упремся рогом в стену. по качану. даже начинать не хочу.:)
strannost 04-05-2006-20:50 удалить
"Кружка с цыплятами - это не класс, а объект, реализация класса "кружка"."

Это для объяснения того, что таким же образом есть класс "жизнь" и объект "жизнь". Потому что ты выразила удивление, как жизнь у меня то класс, то не класс :) А вовсе не потому, что ты там что-то написала :)))))

по качану.

Причем тут "по качану"? Я и так знаю, что так будет. Я же сказала, что не стала даже читать :))))

Оль, ну ты не увлекайся так сильно :)))
Linzza 04-05-2006-21:11 удалить
вот если бы ты прочитала первый пункд, ты бы там увидела, что в контексте обсуждаемой поговорки совершенно не важно - является ли понятие жизнь "классом" или конкретным "объектом" "класса" жизнь. всё равно - двух идентичных явлений нет ни там ни там.
почему у тебя жизнь то класс то не класс вполне прозрачно. непонятно другое - если я пишу о жизни, как о классе, а не о какой-то обусловленной, разной для каждого жизни-объекте, зачем начинать свой коммент с категоричного отрицания написанного? :) и в конце комментария приходить-таки к тому, о чем я, собственно и говорила.
короче, надоела эта калька-перевертыш. тебе хочется видеть различия и уникальную истинность своих суждений - пожалуйста. кто, как говорится, сможет остановить?))
strannost 04-05-2006-21:23 удалить
Ольк, теперь я вообще не поняла, о чем ты :)))))))))

Ты как будто читаешь во всех моих строках то, чего там даже и не было? Так, что ли? :)


Комментарии (32): вперёд» вверх^

Вы сейчас не можете прокомментировать это сообщение.

Дневник Основы объектно-ориентированного программирования | strannost - Странности этой жизни | Лента друзей strannost / Полная версия Добавить в друзья Страницы: раньше»