Всем доброго утра. Наверно тема ни раз поднималась но все же спрошу.
Цитата |
Абстрактными следует считать классы, кот. не существуют в реальности и объекты кот. не понадобяться. |
Цитата |
что бы его унаследовал другой не абстрактный класс? |
Цитата (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-х ядерные процессоры сейчас, то возвращается моде к функциональным языкам, почему это? |
Цитата |
Да и компилятор разрабатывать намного проще - |
Цитата |
На функциональном то языке, угу ню ню ... |