![]() |
Модераторы: Се ля ви |
![]() ![]() ![]() |
|
Medved |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 7209 Регистрация: 15.9.2002 Где: Kazakhstan, Astan a Репутация: нет Всего: 154 |
Ты сам ответил на свой вопрос.
-------------------- |
|||
|
||||
chipset |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: нет Всего: 164 |
Разница между ПОП и ООП такая-же как и между коммунизмом и капитализмом.
Коммунизм: всё общее, дети, жены. Эдакий конвеерный подход. В ООП такие вещи имеют аналогии менеджеры. Т.е. идёт себе кучка голых данных по конвееру а её каждая процедура изменяет. С другой стороны, в ООП прорисовываться некоторая аналогия с западным капиталистическим обществом. Индивидуальность, семья, приватные вещи очень сильно ценяться. --------------------
|
|||
|
||||
Vendigo |
|
|||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 25.9.2005 Где: Челябинская обл. г. Миасс Репутация: нет Всего: нет |
2 Pegas
Ну хорошо, может быть вы правы и я сам ответил на свой вопрос. И все же примера реализации "Жизни" методом ООП не будет? Хотя бы в двух словах, что там взять за объекты и какие там определить события?
Эх, видимо я в програмировании еще полный "гопник" и не осознаю вечных ценностей... ![]() |
|||
|
||||
Exception |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: нет Всего: 186 |
Ценность и простота ООП становится видна не при создании программы, а при ее расширении. Пример про "Жизнь"? Допустим, есть у нас класс GameField. В нем хранится двухмерный массив (поле для игры) и у него есть открытый метод ProcessTick, в котором содержатся операции для обновления поля (рождение, смерть, ..). Еще у нас есть интерфейс IGUI, содержащий метод Paint(GameField). Из ProcessTick вызывается этот метод. Конкретный GUI реализует IGUI. Т.о. в любой момент мы можем менять GUI, не трогая логику.
|
|||
|
||||
Medved |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 7209 Регистрация: 15.9.2002 Где: Kazakhstan, Astan a Репутация: нет Всего: 154 |
В двух словах этого не объяснить. Осознать принципы ООП - вполне реальная задача.
Лучше всего для этого подойдет книга Гради Буча - Объектно-ориентированный анализ и проектирование. -------------------- |
|||
|
||||
Vendigo |
|
|||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 25.9.2005 Где: Челябинская обл. г. Миасс Репутация: нет Всего: нет |
Все понятно, пошел учить С++
![]() |
|||
|
||||
boevik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1452 Регистрация: 31.5.2004 Где: Израиль Репутация: нет Всего: 35 |
Vendigo, можно и в Паскале писать по методологии ООП, мочно и на C++ писать проседуральные программы.
Все дело в походе и какие ограничения накладывает язык. Рамотри свою программу с точки зрения объектов. К примеру, объект колония. Какие характеристики (properties) она имеет. Какую функциональность (method) выполняет. Рассмотри класс который управляет жизнью. С какими объектами он взаимодействует. Есть ли вариации для колоний, которые имеют общие характеристики и поведение (наследственность). Таким образом, ты поймешь как написать программу в ООП. -------------------- Никогда не говори никогда |
|||
|
||||
Vendigo |
|
|||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 25.9.2005 Где: Челябинская обл. г. Миасс Репутация: нет Всего: нет |
2 boevik, да я знаю что есть Object Pascal и Delphi. Я имел ввиду, что мне, видимо, не хватает знаний и опыта для того чтобы оценить ООП. А посему нужно просто двигаться вперед, не пытаясь заглядывать за горизонт
![]() Имохо, программировать "Жизнь" ООП способом, это сродни использованию танка в роли городского транспорта. И накладно, и неудобно, только шишек набьешь да дороги попортишь. "К примеру, объект колония" Какие характеристики она имеет? 1. Расположение клеток (основная и исчерпывающая характеристика колонии) 2. Возраст (можно подсчитывать, сколько поколений прошло от изначальной конфигурации) 3. "Зацикленность" (можно запоминать последние поколений 20, и если конфигурация в текущем поколении совпала с каким-нибудь предшествующем, то колония зациклилась) Методы: 1. Просчитать следующее поколение 2. Записать в файл 3. Считать из файла 4. Нарисовать 5. Создать случайную колонию В целом, если убрать шелуху, то объект колония имеет одну характеристику - расположение клеток. И три метода - создать колонию, нарисовать колонию и просчитать следующее поколение. Наследственность и взаимодействие с другими объектами, по-моему, здесь трудно реализовать. Мой вывод: программа слишком проста для ООП. Проще ходить пешком ![]() |
|||
|
||||
boevik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1452 Регистрация: 31.5.2004 Где: Израиль Репутация: нет Всего: 35 |
А где проходит граница между процедуральным и ООП програмированием?
Какими критериями оперировать для приема решения ООП или процедуры? Для учебной цели сделать игру "Жизнь" в ООП полне подходящая задача. Никто не начинает писать программы с сотни-десятков классов. Так, что начинай с простеньких программ. -------------------- Никогда не говори никогда |
|||
|
||||
Exception |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: нет Всего: 186 |
||||
|
||||
Medved |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 7209 Регистрация: 15.9.2002 Где: Kazakhstan, Astan a Репутация: нет Всего: 154 |
Изящество ООП проявляется во всем. И при разработке и при перепроектировании.
Чтобы понять всю мощь ООП необходимо для начала хотя бы изучить эту технологию, а потом уже делать какие-либо выводы. -------------------- |
|||
|
||||
Exception |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: нет Всего: 186 |
Я имею в виду наиболее наглядно видно
![]() |
|||
|
||||
Vendigo |
|
|||
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 25.9.2005 Где: Челябинская обл. г. Миасс Репутация: нет Всего: нет |
Ну чтож, я рад что ООП такая полезная вещь. Как только появится время, и вера в свои силы, засяду за новую версию "Жизни". Надеюсь, вы поможете мне в ее проектировании.
Это сообщение отредактировал(а) Vendigo - 6.3.2006, 21:07 |
|||
|
||||
Exception |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: нет Всего: 186 |
Лучше напиши Шахматы
![]() |
|||
|
||||
ZeusAtVingrad |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 82 Регистрация: 12.4.2006 Репутация: нет Всего: нет |
Интересно, что полиморфизм как-то не упоминается.
А между тем это одна из самых мощных и красивых парадигм ООП. У Страуструпа что-ли читал: Ваша программа не может называться объектно-ориентированной только потому что у вас в тексте есть ключевое слово class. Настоящая объектно-ориентированная программа использует полиморфизм. |
|||
|
||||
![]() ![]() ![]() |
Правила раздела "Философия программирования": | |
|
Форум "Философия программирования" предназначен для обсуждения вопросов, так или иначе связанных с философскими аспектами разработки ПО: • вопросы перспективного развития методов написания ПО; • изменяющиеся языки и методологии программирования; Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Се ля ви. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Философия программирования | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |