Всем доброго утра. Наверно тема ни раз поднималась но все же спрошу.
| Цитата |
| Абстрактными следует считать классы, кот. не существуют в реальности и объекты кот. не понадобяться. |
| Цитата |
| что бы его унаследовал другой не абстрактный класс? |
| Цитата (m4a1fox @ 14.09.2011 - 07:29) |
| Да, получается так. Но! Класс кот. наследует абстрактные методы, должен унаследовать их все! |
| Цитата (m4a1fox @ 14.09.2011 - 07:33) |
| EvilDev Ну, это здорово конечно... Я не могу понять практического применения... |
| Цитата (m4a1fox @ 14.09.2011 - 07:38) |
| vital Эка.. как не интересно |
| Цитата |
| Программирование вообще скучаня штука. |
модуль1 модуль2 модуль3
| | |
| | |
| | |
__|_______________|_____________|____
index()
_____________________________________
|
|
|
__________________|__________________
Браузер
| Цитата |
| А гараж принимает любую форму, т.е. любое авто, которое ему задаст платформа, т.е. контроллер. |
| Цитата |
| Вы с вашими аналогиями меня совсем запутали. Гараж есть, он один и принимает любое авто. |
| Цитата |
| Прелесть абстрактных и методов в том, что их можно переопределять из наследника. |
| Цитата |
| И классы (автомобиль) которые будут наследоваться, от базового класса, должны будут обязательно переопределить (перегрузить) эти методы (свойства автомобиля), то есть создать свое подобие руля, колес и т.д. |
abstract protected function wheels(); // Колеса
abstract protected function st_wheel(); // Руль
protected function wheels()
{
// куча кода
}
| Цитата |
| Тогда зачем нам создавать абстрактный метод общий, если мы все равно его переопределяем (по сути пишем заново) в наследниках. |
| Цитата |
| то что он сказал (то есть реализовали все методы |
| Цитата |
| Не хотите отвечать.... не нужно. |
| Цитата (m4a1fox @ 14.09.2011 - 16:44) |
| Значит, его не нужно каждый раз объявлять |
include 'Cars.php';
class Car extends Cars
{
protected function wheels() // переопределяем/реализуем обязательный метод, который в родительском классе является абстрактным
{
// куча кода
}
private functions properies() // Собственный метод класса Car в котором характеристики хранятся
{
return parent :: Speed($x, $y); // Обращаемся к родительскому классу не создавая объект
// return Cars :: Speeds($x, $y); // Еще один способ как добраться до абстрактного класса
}
}
| Цитата |
| Если вне класса ты хочешь обратиться к какому-то методу абстр. класса, то пишешь Имя_класса :: метод |
| Цитата (caballero @ 14.09.2011 - 16:51) |
| это статическое обращение при чем тут абстрактный или нет |
| Цитата |
| Ну до этого он сам дойдет... |
| Цитата |
| И да caballero я вижу вы шарите в этом деле. ПРофессионально или любитель ? |
| Цитата |
| Именно в такой последовательности сейчас и делаю. |
| Цитата |
| на статических. |
| Цитата |
| Вот... попробовал перевести весь процесс на mvc но столкнулся с некот. трудностями. А именно с тем, как отделить логику от представления. |
| Цитата |
| Почему бы вам просто не вынести логику в клдассы (пусть даже статические если нет явной необходимости инкапсуляции) И вызывать методы классов для получания выходных данных получите то же самое отделение логики |
| Цитата |
| Дык я так и сделал! Отдельно классы - отдельно вид. И файл кот включает в себя первый и второй файлы по необходимости. |
| Цитата |
| просто файл с неким классом к примеру users.php где функции работы с юзерами с БД и пр |
| Цитата |
| Вообще я абстракцией интересовался! |
| Цитата (caballero @ 14.09.2011 - 15:16) |
| Цитата И да caballero я вижу вы шарите в этом деле. ПРофессионально или любитель ? многолетний опыт программирования и работы в IT конторах абстракция - это к философам у программеров - абстрактные классы у технарей а не домохозяек - технический язык с правильно употребляемыми терминами |
| Цитата |
| Мда уважаемый, этим постом всё сказано, какое звено Вы представляете в IT организациях. |
| Цитата |
| До выделения абстракций для классов, требуется, от нас архитекторов, довольно большой объём "философской" работы по выделению и классификации абстракций и их интерфейсов. |
| Цитата (caballero @ 14.09.2011 - 16:28) | ||||
ничего не сказано - просто программер с опытом работы больше чем ты на свете живешь
Наукоподобный набор слов из учебника PHP для домохозяек. |
| Цитата |
| До выделения абстракций для классов, требуется, от нас архитекторов, довольно большой объём "философской" работы по выделению и классификации абстракций и их интерфейсов из предметной области, чем занимается аналитика. Наукоподобный набор слов из учебника PHP для домохозяек. |
<?php
abstract class AbstractProduct
{
protected $id = null;
protected $stack = array();
public function addProduct(Product $product)
{
array_push($stack, $name);
}
abstract public function deleteProduct(Product $product);
}
class ConcreteProduct extends AbstractProduct
{
public function deleteProduct($name)
{
// Алгоритм удаления продукта из стека
}
}
?>
<?php
$composition = new ConcreteProduct();
// Если объект не является типом AbstractProduct значит возможен в дальнейшем сбой
// потому что только этот тип может обеспечить то, что есть интерфейс addProduct
if(!($composition instanceof AbstractProduct))
{
throw new SystemException('Системная ошибка не правильное определение класса');
}
$composition->addProduct(new Product());
?>
| Цитата |
| Получился сайт, состоящий из классов а mvc структура похожа на процедурное. То есть смешал коней с людьми! |
| Цитата |
| А именно с тем, как отделить логику от представления. |
| Цитата |
| Абстрактные классы - это классы выявленные в результате анализа требований и предметной области, |
| Цитата |
| В проектировании архитектуры и особенно в паттернах проектирования нацеленных на интерфейсы используют типы. |
| Цитата |
| Я наверное увлёкся философией :) ближе к телу |
| Цитата |
| только с абстракцией, то есть типом |
| Цитата |
| Можно ещё посмотреть паттерн абстрактная фабрика там хорошо видно использование клиентом типа. |
| Цитата |
| процедурный -> функциональный -> модульный -> ооп |
| Цитата |
| caballeroПерестаньте копипастить учебники и попробуйте сами хоть один проект написать. Увидите разницу между теорией и реальностью. Новичкам надо помогать чтобы перестали писать "китайский" (или по другому -"спагетти") код. А не учить их "индийскому" коду где на каждый чих создаются куча интерфейсов и абстрактных фабрик которые потом невозможно отладить даже самому горе-архитектору. |
| Цитата |
| А писать только потому что так модно- ну незнаю... это на любителя гемора. |
| Цитата |
| Ах да, если Вы UML не применяете это не означает что его нет |
| Цитата |
| Сожалею о Вашей неграмотности (сразу задаюсь вопросом, точно ли конторы IT). |
| Цитата |
| Статья моя и потрудился над ней я без применения учебников "на прямую". |
| Цитата |
| Это разные парадигмы программирования никак друг к другу не относящиеся. |
| Цитата |
| Понятное дело что для новичков это тяжело, но применение паттернов как не формальный стандарт испытанный так сказать "в бою" не одним приложением сократит длину геморроя как минимум на пару сантиметров |
| Цитата |
| просто обозначил некую эволюцию в смене понятий |
| Цитата |
| Не,ну архитектура конечно нужна,по большому счету она есть базовой,и все от нее отталкивается,весь вопрос как ее грамотно продумать,в противном случае нивелируется практически вся работа. Короче,что тут сказать? Все это философско-религиозный вопрос... над бытием кода |
| Цитата (caballero @ 14.09.2011 - 20:51) |
| Дело в том что человек задал конкретный вопрос о конкретной структуре синтаксиса в языке программирования. Философия и очевидные вещи о необходимости сначала думать потом кодировать несколько не к месту. |
| Цитата |
| Всем доброго утра. Наверно тема ни раз поднималась но все же спрошу. Цитата Абстрактными следует считать классы, кот. не существуют в реальности и объекты кот. не понадобяться. Вопрос! Так зачем вообще нужны абстрактыне классы и методы, если они не появяться и не понадобяться? |
| Цитата |
| Может я не понял, а где здесь вопрос про синтаксис |
| Цитата (caballero @ 14.09.2011 - 21:25) | ||
Форум о некоем языке программирования PHP или о девочках? Не имеет смыла обсуждение что такое абстрактный клас вне синтаксиса языка программирования предусматривающем ключевое слово abstract |
| Цитата |
abstract в программировании - просто ключевое слово не имеющее никакого прикладного смысла. С таким же успехом вместо abstract class разработчик языка мог употребить fucking class - компилятору было бы пофиг. |
| Цитата |
| Хоть определись. |
| Цитата |
| Это не эволюция - парадигмы существуют и развиваются параллельно. Например в связи с появлением многоядерных систем возник опять интерес к функциональным языкам. |
| Цитата |
| несколько не к месту. |
| Цитата |
| Еще могу предположить,что под словом парадигма ,вы имеете понимание отличное напрмер от этого |
| Цитата |
| Ну начнем с того,что на ПХП можно применять разные парадигмы,сответственно и сваливать все в кучу тоже можно. |
| Цитата |
| А какое твоё отношение к ООП? |
| Цитата |
| Ты вот сказал, что в связи с тем, что 4-х ядерные процессоры сейчас, то возвращается моде к функциональным языкам, почему это? |
| Цитата |
| Да и компилятор разрабатывать намного проще - |
| Цитата |
| На функциональном то языке, угу ню ню ... |