Помогите с освоением ооп

Статус
Закрыто для дальнейших ответов.

FiRеFоX

V.I.P.
Регистрация
07.08.2010
Сообщения
744
Вот почитал литературку, погуглил, но так и не понял как применять ооп на практике.
Может кто-нибудь написать самый простой пример ооп с ипользованием бд?
Или дать ссылочку на нормальные примеры использования, где их действительно можно применить. А то во всех учебниках одно и тоже:
"Создаем это, вставляем и пишем это, выводим вот сюда. Вот как это удобно, использовать классы."
А че там удобно, какое отличие от обычного написанного пхп, как использовать на практике их примеры - не понятно.
 

minority

generator randomly php
Регистрация
02.05.2010
Сообщения
443
"Создаем это, вставляем и пишем это, выводим вот сюда. Вот как это удобно, использовать классы."
А че там удобно, какое отличие от обычного написанного пхп, как использовать на практике их примеры - не понятно.
Ты же программист? должен проанализировать примеры и написать как тебе удобно, если то что ты написал удобно использовать, легко масштабировать и рефакторить, и при этом не выдает ошибок, значит ты написал все верно.
 

lekzd

parse error: parse error, unexpected T_STRING...
Регистрация
17.02.2011
Сообщения
1 125
при разрастании проекта до 10 000 строк кода решение о пользе ООП приходит как само собой разумеющееся=)
 

brevis

Well-Known Member
Регистрация
10.08.2010
Сообщения
452
Это по-моему не аргумент.
Тигра хорошо сказал: "...как решать задачу зависит от того, в каком ты стиле ты её ставишь...".

Может кто-нибудь написать самый простой пример ооп с ипользованием бд?
Самый простой пример вряд ли покажет тебе всю мощь и красоту ООПшного подхода. Но если что -- ищется он так.
Предлагаю посмотреть это. Тут есть примеры классов от работы с БД до блогового движка. И все в "micro"-стиле -- т.е. ничего лишнего. Только сразу предупреждаю -- примеры не простые, но зато хорошие.

P.S. Ну и на злобу дня предлагаю ещё одну ссылку. Некоторые каменты отдельно доставляют :)
 

FiRеFоX

V.I.P.
Регистрация
07.08.2010
Сообщения
744
Ты же программист? должен проанализировать примеры и написать как тебе удобно, если то что ты написал удобно использовать, легко масштабировать и рефакторить, и при этом не выдает ошибок, значит ты написал все верно.
Мне удобно без всяких ооп. Функций достаточно) Но все только об ооп и твердят: "не знаешь ооп - значит ты отстой"
Самый простой пример вряд ли покажет тебе всю мощь и красоту ООПшного подхода. Но если что -- ищется он так.
Не, думаю, что у меня не будет проекта столь грандиозного, что бы внедрить в него все мощи ооп :/

А нет никакого простенкого скрипта фотогалереи или блога с ипользованием ооп? Что бы его поковырять можно было.. Только не какая-нить огромная cms, а то я в них нифига не разбираюсь) Одну как-то скачал - глянул код, ужаснулся, перекрестился, постучал три раза и сразу же её удалил, т.к в таком разбираться мне ещё рано)
 

A-F

Well-Known Member
Регистрация
25.07.2011
Сообщения
390
эммм ООП это что-то типа.....

Есть общий класс POST который умеет хранить текст, и на его основе создаются простые посты на сайте, и вдруг к примеру тебе надо сделать посты в виде фотоальбома, и тут ты создаешь FOTOPOST и наследуешь POST .... что бы не копировать половину очевидных данных ...

сорри за тупое оформление... я пьян
 

FiRеFоX

V.I.P.
Регистрация
07.08.2010
Сообщения
744
эммм ООП это что-то типа.....

Есть общий класс POST который умеет хранить текст, и на его основе создаются простые посты на сайте, и вдруг к примеру тебе надо сделать посты в виде фотоальбома, и тут ты создаешь FOTOPOST и наследуешь POST .... что бы не копировать половину очевидных данных ...

сорри за тупое оформление... я пьян
Да пофиг на формление, главное что бы было понятно. Но я один фиг ничего не понял, наверное, потому что ты пьян :D
Вобщем, если я пральна понял, то классы - это типа коробка, в которой описан ход действий с одними и теми же данными, но в разной ситуации по разному. так?
Ну и какое тогда отличие от функций?
Я точно также могу написать две функции - одна будет выводить эти посты обычно, а другая будет выводить посты в виде фотооальбома.
Один раз получаю данные, два раза вызываю функции, никаких повторов. Хотя это две функции можно даже сократить в одну:
Код:
function post($text, $method){
if($method=='Обычно'){
//выводим обычно на страницу посты
}
elseif($method=='Фотопосты'){
//Выводим посты в виде фотогалереи
}
else{
//Сообщаем, что не выбран тип вывода
}
}
По моему это ооп отличается только красотой написания..
 

brevis

Well-Known Member
Регистрация
10.08.2010
Сообщения
452
Ну и какое тогда отличие от функций?... Хотя это две функции можно даже сократить в одну:
Ой, я прямо эффект дежавю словил :)
Мы тут пытались обсудить этот вопрос на последней конференции. И стоит сказать, что толком то и не договорились :)
С позиции разработчика, ООП или процедурный стиль -- это дело вкуса. С позиции индустрии -- это мода на ООП.
 

A-F

Well-Known Member
Регистрация
25.07.2011
Сообщения
390
ООП - меньше кода писать.... и правильная логика короче... вообще крупные проекты проектрируют именно Объектами и т.п.
 

FiRеFоX

V.I.P.
Регистрация
07.08.2010
Сообщения
744
Это будет ооп? Только что написал, первое что пришло в голову по этому:

Код:
<?php
class myclass{
var $name='Моё_имя';
var $pass='Мой_пароль';
function izm($new,$name_pole, $izm){
if($this -> $name_pole != $new){
$this -> $name_pole = $new;
$text='Поле '.$izm.' с изменено: '.$this -> $name_pole;
return $text;
}
else{
$text = 'Поле с '.$izm.' не было изменено'; return $text;}
}
}
$class = new myclass();
if($_POST['go']){
$result[] = $class -> izm($_POST['name'],'name','именем');
$result[] = $class -> izm($_POST['pass'],'pass','паролем');
if($result){echo '<b>Отчет по изменениям:</b><br>'.implode('<br>',$result).'<hr>';}
}
echo '<form action="" method="post"> <b>Имя:</b><br><input type="text" name="name" value="'.$class->name.'"> <br><br> <b>Пароль:</b><br><input type="text" name="pass" value="'.$class->pass.'"> <br><input type="submit" name="go" value="go"></form>';
Ногами только не бить, на первый раз можно и простить ;)
 

tigra60

Спасатель
Регистрация
10.12.2009
Сообщения
1 990
Нет, это не ООП.

Учитесь думать, а не выполнять наставления из уроков попова.
 

A-F

Well-Known Member
Регистрация
25.07.2011
Сообщения
390
Все что после создания объекта надо было сделать методом.
 

minority

generator randomly php
Регистрация
02.05.2010
Сообщения
443
Даже если вы добавите классы и будете их использовать это будет не ООП.
Да и вы уже ошиблись как я уже где то говорил ООП ради ООП не есть хорошо, потому что получится 100% говна код.
В вашем случае лучше не задумываться пока об ООП пишите функции и как вам удобно.

П.С я бы не сказал что есть мода на ООП, просто большой проект проектировать/рефакторить на процедурки я считаю извращение
 

A-F

Well-Known Member
Регистрация
25.07.2011
Сообщения
390
Советую почитать
Ловейн ООП программирование на PHP5
PHP Объекты Шаблоны Методики программирования
 

czp

czp
Регистрация
05.06.2011
Сообщения
635
Вот почитал литературку, погуглил, но так и не понял как применять ооп на практике.
Может кто-нибудь написать самый простой пример ооп с ипользованием бд?
Или дать ссылочку на нормальные примеры использования, где их действительно можно применить. А то во всех учебниках одно и тоже:
"Создаем это, вставляем и пишем это, выводим вот сюда. Вот как это удобно, использовать классы."
А че там удобно, какое отличие от обычного написанного пхп, как использовать на практике их примеры - не понятно.
совет ->книги читать
--
ну и небольшой детсадовский пример кидаю))только за название переменных не кидайте в меня тапки я так не называю только для примера, канечно не самый лучший пример но так для старта

Код:
class stakan {
  private $obyom_stakana;
  private $gidkosti = 0;

  function __construct($val) {
$this->obyom_stakana = $val;
  }

  public function zalit($val) {
if ($val > $this->obyom_stakana) {
   echo 'Не влезет';
} else {
	  $this->gidkosti = $val;
   echo 'В стакане : ' . $this->gidkosti;
}
  }
}
$stakan_graneny = new stakan(21);
$stakan_graneny->zalit(20);
 

tigra60

Спасатель
Регистрация
10.12.2009
Сообщения
1 990
Очень плохой пример.

В правильном именовании переменных, классов, их свойств и методов заключается 90% успеха!

То, что вы написали очень далеко от ООП. Просто малоосмысленный набор ключевых слов.Кроме того - обработка и вывод данных в одной куче.
Фи.
 

czp

czp
Регистрация
05.06.2011
Сообщения
635
ну и небольшой детсадовский пример кидаю))
я так и написал что пример не супер
только за название переменных не кидайте в меня тапки я так не называю только для примера
и это тоже написал))
для начала пусть классы научится создавать, а потом дальше пойдет
Москва тоже не сразу строилась, все нужно делать постепенно, а если ему дать здоровенный код он и не поймет
 

tigra60

Спасатель
Регистрация
10.12.2009
Сообщения
1 990
Уроки попова построены по тому же принципу. С самого начала показать неправильно, чтобы потом человек вовек не разобрался и бегал за поповым.

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

Как там в мультике? "Лучше день потерять, зато потом за 5 минут долететь!"


Для вашего примера это выглядит примерно так:

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

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

Заметили, как помогает осмысление задачи её правильному решению?

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

czp

czp
Регистрация
05.06.2011
Сообщения
635
Нам нужен, наверное еще метод для слива жидкости из стакана.
ну это спорный вопрос, этот метод по желанию
Кроме того, прямой доступ к свойствам объекта - дурной тон. Поэтому нам нужны методы для получения значений свойств.
можно пример, на стакане
 

lekzd

parse error: parse error, unexpected T_STRING...
Регистрация
17.02.2011
Сообщения
1 125
Кроме того, прямой доступ к свойствам объекта - дурной тон. Поэтому нам нужны методы для получения значений свойств.
есть то, что написано на сферическом ООП в вакууме, а есть то, что просто работает и мануал по функционалу у него занимает не более половину одного А4

я вот обычно склоняюсь ко второму варианту, я не против ООП, я за то, чтобы вовремя остановиться
 
Статус
Закрыто для дальнейших ответов.
Верх Низ