Программирование: объектное vs процедурное

Какой подход к программированию вы используете


  • Всего проголосовало
    59
Статус
В этой теме нельзя размещать новые ответы.
garcia, ты сам почитай то, о чем ты говоришь и пойми, что несешь полную ерунду.

По поводу ООП: знаешь что такое наследование, полиморфизм?

Кто не дает тебе клонировать класс с ипользованием перегрузки всего 1-ой функции (либо свойства) чтобы изменить экземпляр родительского класса?

Да, кружки бывают разные. Но - они все кружки. У них есть ёмкость и есть ручка. Ручка может быть с другой стороны или ее не будет вовсе (читай - нулевая длина) - но это СВОЙСТВО, которое можно изменить при создании экземпляра.

Вообщем, советую тебе литературы по OOП почитать. И думать о том, что ты пишешь :-]
 
Хе-хе...

1. Покажи код класса, который работает некорректно под четверку и работает на пятерке. Я такого не видел.
2. Четверка отменяется, кстати... Чуть более месяца осталось - рано либо поздно все равно умрёт, как и тройка...
3. Чем обоснованны слова
?
1. Где то месяца два назад писал регер для почта.ру, под 4кой вылетало с синтаксической ошибкой на строке где создаю объект, включаю на 5ой версии - все работает как часики:nezn:, незнаю может я сам чегото перепутал и засунул какойто оператор с 5ки, короче не важно, ща пишу только функции
2. Очевидно это когдато случитсья
3.факт в том что я сделал для себя такой выбор, и советую другим, сам пхп5 использовать не буду, тк для меня сейчас важно постичь более интересные и мощные языки, которые изучаю непосредственно на месте своей учебы
 
Можно вопрос?
Где то месяца два назад писал регер для почта.ру, под 4кой вылетало с синтаксической ошибкой на строке где создаю объект, включаю на 5ой версии - все работает как часики, незнаю может я сам чегото перепутал и засунул какойто оператор с 5ки, короче не важно, ща пишу только функции

ТАК КАКОГО ХРЕНА ТЫ СОВЕТУЕШЬ НЕ ИСПОЛЬЗОВАТЬ php5 ЕСЛИ САМ ЕГО НЕ ЗНАЕШЬ?
Аж бесит, сцуко
 
Кто не дает тебе клонировать класс с ипользованием перегрузки всего 1-ой функции (либо свойства) чтобы изменить экземпляр родительского класса?
Все правильно. А потом клонируешь клонированный объект - потому что там нужный функционал уже отлажен, и т.д. пока объем неиспользуемого кода не перерастет объем используемого. А теперь нужно простенькое приложеньице, использующее последние клоны - это надо весь сарафан тащить. И чем дальше тем больше. И главное - назад пути нет, потому что разбираться со всем сарафаном (написанным еще и не тобой) - гемор.

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

Все можно объектами делать. Просто я говорю, что в некоторых случаях их приимущества не катят
 
Ну конечно, если писать 20-ти строчечные скрипты и гордиться этим (поскольку все доказательство ты основываешь на короткости кода) - то классы не нужны.

Если ты дальше продолжаешь - все таки советую почитать про классы несколько лучше, чем форумы... Книжку купить. Пописать приложения в 10-15к строк кода со сложной логикой. Вот тогда поймешь о чем я.
 
Блин, я что, говорю, что ООП ***но? Пишите процедуры? Я просто говорю, что процедурный подход не умрет никогда и объяснил почему.
 
  • Заблокирован
  • #17
объясните пожалуйста в чем разница между

Линейный
Процедурный
ООП упрощенный ("логический")
ООП полнофункциональный
 
garcia, а как еще расценивать твои познания по следующей цитате:
Чем приделывать к кружке вторую ручку, потому что в первую не пролазит палец (а при создании объекта это концептуально предполагалось - ошибка проектирования), не проще ли написать процедуру под такой случай? Особенно, если в задаче всего-то и нужно попить кофейку. Просто есть задачи, где тупо много рутины а сколько нибудь развитую объектную модель построить не удается да и незачем.
?
 
garcia, а как еще расценивать твои познания по следующей цитате
Тут топик по другой теме. Также не хочу участвовать в религиозных войнах.
Пример про кружку был действительно неудачный.
Ну конечно, если писать 20-ти строчечные скрипты
OsCommerce, PHPMyAdmin
и гордиться этим
Гордиться надо тем, что скрипт хорошо решает поставленную задачу.
 
Хорошо, если ты так упорствуешь - я задам тебе задачку. Вот тебе код. Разбирайся... Потом переведи на процедурный стиль, договорились? =)

PHP:
<?php
	interface Toucheable
	{	// Standart class functions
		function __construct();
		function __destruct();

		// Addons
		function wash();			// Мыть 
		function clear_slack();	// Вытирать
	}
	
	class permissions implements Toucheable 
	{	var $class_name;
		var $water_washable;		// разрешено мыть водой
		var $spec_washable;			// разрешено мыть спец раствором
		var $rags_cleareble;		// разрешено ли чистить пыль ветошью
		var $aero_clearable;		// разрешено ли чистить пыль воздухом
		
		function __construct()
		{	$this->class_name = 'permissions';
		}
		function __destruct()
		{
		}
		function wash()
		{	// Логика, которая выставляет дефолтовые значения
			$this->water_washable = true;
			$this->spec_washable = false;
		}
		function clear_slack()
		{	// логика, которая выставляет дефолтовые значения
			$this->rags_cleareble = false;
			$this->aero_clearable = true;
		}
	}

	
	class dishes extends permissions
	{	function __construct(){	$this->class_name = 'dishes';}
	}
	
	class spoons extends permissions
	{	function __construct()	{$this->class_name		= 'tea_spoons';}
		function wash()			{$this->spec_washable	= true;}
		function clear_slack() 	{$this->rags_cleareble	= true;}
	}
	
	
	$permitions = new permissions();
	$permitions -> wash();
	$permitions ->clear_slack();
	$dishes = new dishes();
	$dishes -> wash();
	$dishes -> clear_slack();
	$spoons	= new spoons();
	$spoons -> wash();
	$spoons -> clear_slack();
	
	$dishes_correctly = ($dishes instanceof permissions)?'true':'false';
	$spoons_correctly = ($spoons instanceof permissions)?'true':'false';
	
	echo '$dishes_correctly ',$dishes_correctly,'<br />';
	echo '$spoons_correctly '.$spoons_correctly,'<br />';
	echo 'default::rags_clearable ',($permitions->rags_cleareble)?'true':'false','<br />';
	echo 'default::aero_clearable ',($permitions->aero_clearable)?'true':'false','<br />';
	echo 'dishes::rags_clearable ',($dishes->rags_cleareble)?'true':'false','<br />';
	echo 'dishes::aero_clearable ',($dishes->aero_clearable)?'true':'false','<br />';
	echo 'spoons::rags_clearable ',($spoons->rags_cleareble)?'true':'false','<br />';
	echo 'spoons::aero_clearable ',($permitions->aero_clearable)?'true':'false','<br />';
?>


В кратце: во первых, этим кодом гарантирована установка каждой из 5-ти свойств каждого класса => нет необходимости в валидации данных и лишней итерации в циклах проверки.
Прощу заметить - два условия для проверки установленности 10 значений.


Во вторых - жестко заданы правила для классов. Какими они должны быть, чтобы обеспечить реализацию API-интерфейса, для повторного использования кода.

В третьих: не нарушено логическое представление задачи.


Сможешь реализовать на процедурном php - сверим на быстродействие на php5 машинке. Если и это тебе ни о чем не скажет - расширим код для усложнения логики.

Удачи в решении задачки =)
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху