[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Использование ООП в крупных проектах
Страницы: 1, 2, 3, 4, 5, 6, 7, 8
fMichail
Дорогие друзья!

У меня такой вопрос: как по максимум внедрить ООП в проект, на следующем примере:

База данных сотрудников, и заказов. Личные кабинеты, несколько категорий пользователей. Отслеживание статусов по каждому заказу. Видение общего лога по событиям в системе.

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

Думаю ещё систему контроля версий попробовать, не в курсе вообще что это такое.


_____________
Прекрасный Мир
kaww
Из поста следует, что хочу ооп ради ооп. Не совсем верный подход.

Прежде всего нужно научиться мыслить объектно (да, это "создания обьекта типа пользователь, типа заказ"), в этом очень хорошо помогают объектно ориентированные яп, например, java, c++ да много их http://ru.wikipedia.org/wiki/%D0%9E%D0%B1%...%BD%D0%B8%D1%8F .Еще можно взять какой-нибудь популярный ооп фреймворк, и тем самым убить 2-х зайцев - научиться ооп и изучить фреймворк.
SlavaFr
Добавлю к тому, что посоветовал уже kaww, прочитать литературу по паттернам, так как понимя паттерны OOP начинаешь делать объекты и структуры которые понимают и распознают другие программисты и сам оттачиваешь подход к той или иной задаче посредством OOP. Мало тоого нужно разобраться в основных принципах CCD к примеру здесь http://www.clean-code-developer.com/

_____________
↓↓↓↓↓↓↓↓↓↓
ответ может быть здесь
или в mysql_error();
bestxp
баланс между ооп и производительностью хрупкий


Если система ЕРП или это вообще например биллинг то тут как ни крути только крутое ооп с кучей тестов на каждый чих

Если у тебя средний сайт и баланс такой же,

Если ты делаешь что-то простое нинужно ооп

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

тут подход, а далее уже пойдут ужасы типа Инкапсуляции, Полиморфизма и тд , solid, grasp

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

twin
Цитата
ООП способ переложить объекты и процессы реального мира на технический язык
ООП, это ООП. Ключевое слово - программирование, никакой связи с реальным миром нету. Мыслить такими категориями, значит сразу загнать себя в рамки.

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

Ну какой реальный мир, о чем вы.

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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
forza
Разве можно представить себе в реальном мире кошку, которая может родить трехголового ягненка, у которого есть брат-близнец, умеющий летать...

Поясните пожалуйста, как выше сказанная фраза относится к ООП? Это скорее всего похоже на камень в огород разработчику, который такое создал.. Белиберду и на процедурке напрогать можно...

_____________
Заработок для веб-разработчиков: CodeCanyon
Мое Портфолио
glock18
Цитата (forza @ 8.10.2013 - 10:52)
Разве можно представить себе в реальном мире кошку, которая может родить трехголового ягненка, у которого есть брат-близнец, умеющий летать...

Поясните пожалуйста, как выше сказанная фраза относится к ООП? Это скорее всего похоже камень в огород разработчику, который такое создал.. Белиберду и на процедурке напрогать можно...

вероятно, ссылка на http://en.wikipedia.org/wiki/God_object. Несколько неуместная, на мой взгляд
bestxp
twin опять накурился, ну его можно вообще не слушать, он не ведает что говорит xD , а так же компетентность его как программиста уже давно под вопросом
@twin Притом даже то что ты написал в ООП врятли реализуешь, а если и реализуешь то получиться говнокод, с ГОД классом, который может все.

Итак примеры мои,

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

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

Вот в том же Yii, который так любит bestxp, где там есть товары, где покупатели? Да вообще, где магазин то?

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

И это вовсе не GOOD OBJECT.

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

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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
GET
Цитата
. Специально для таких писал.

отличная и правильная статья.

bestxp
Цитата
Мы хотим реализовать например интернет магазин,
у нас есть товар, у нас есть покупатель, корзина, поставщик, продавец, валюта,
у товара есть свойства, и важное цена
покупатель это ты или я

это тоже самое:
http://www.youtube.com/watch?v=0xI4TNjFEPI

Это я в смысле, что по мне дак это такая глупость написана, только тебе одному понятная.

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
bestxp
@twin

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

На счет летащих кошек, кто сказал что нелья в реальности?
А как же эволюция? Вот тебе и наследование.

Инкапсуляция? Да легко, ты же знаешь что поев еда перевариться, и тд, но сам процесс ты не видешь, грубо говоря положил еду получил говно.

Полиморфзм ? Тоже не проблема, попробуй засунуть в высоковольтную розетку штекер на 220 ?))

Абстракция ? Ты что ли шаблонов не видел ?

И т.д. все это есть , пойдем в сторону yii

сравним процессы внутри с реально происходящим,

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

ps прочитал твою статью и посмеялся от души...скину коллегам , пусть посмеются тоже
twin
Это теория. Вот чем и отличается реальный мир от программирования. В реале кошку научить летать можно только теоретически. А в программировании легко. Если в программировании мыслить так же, будет куцо и убого. Впрочем кому я...

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

Инкапсуляция. Гы. Сколько раз я приводил пример, что инкапсуляция - зло, но до такой яркой ассоциации не додумался. Спасибо. Именно так и выглядит все на самом деле. Если не можешь управлять процессами, если полагаешься на "внутренние органы", то конфетки не получится. А что бы получить конфетку, процессы лучше контролировать, чего инкапсуляция не терпит. Но это отдельная большая тема. Суть я думаю понятна, если инкапсуляцию представлять ассоциациями из реального мира, выйдет исключительно говно.

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

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

Программирование сродни волшебству. В виртуальном мире можно легко решить такие задачи, которые никогда не решаются в реале. Можно сделать ковер-самолет, скатерть-самобранку и так далее.

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

Я готов закрывать на это глаза, когда есть польза. А тут проостите... Срамота какая то.

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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
buster
Главная проблема(причем не решаемая) в том что оба оппонента правы. rolleyes.gif
У каждого человека своя методика понимания вещей. В мире есть много вещей имеющих двойственную природу, поэтому объяснить их можно двумя равнозначно-правильными способами.

Лучше сфокусироваться на качественном программном коде, а не на методах объяснения сути.
Из вышеуказанных комментариев я уловил два подхода представления сущности ООП класса
- как базовый класс, (универсальный солдат)
- как рыжая собака которая умеет много чего делать, и даже больше
- третий вариант.

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

Простите за поток сознания, я пока с ООП не знаком, но наслышан.

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

_____________
↓↓↓↓↓↓↓↓↓↓
ответ может быть здесь
или в mysql_error();
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.