помогите врубиться в ООП

fixxxer

К.О.
Партнер клуба
что и, ссылки то смотри.


кстати наследование это вообще не про ооп, это так, следствие.

PHP:
#include <stdio.h>

typedef struct {
    char name[256];
    char sound[256];
    int  is_big;
} t_poo_maker;

void poo(t_poo_maker ctx) {
    printf("%s makes a %s %s\n", ctx.name, ctx.is_big ? "BIG" : "small", ctx.sound);
}

int main() {

    t_poo_maker
        kitten = {"Kitten", "pu", 0},
        hippo  = {"Hippo",  "POOOOOOOOOOOOOO", 1};


    poo(kitten);
    poo(hippo);

    return 0;
}
чо большая разница?

-~{}~ 31.07.10 18:06:

о, уже подредактировал)))
 

Welcome

Новичок
Автор оригинала: craz
class animal {
protected _legs = 4;
function getLegs(){ //сколько ног у животных
echo $this->_legs;
}
}
class cat extends animal{
...
}
$cat = new cat;
$cat->getLegs;//4
$tiger = new tiger;
$tiger->getLegs;//
PHP:
function cat()
{
$aAnimals['cat']['legs'] = 4;
}

function tiger()
{
$aAnimals['tiger']['legs'] = 4;
}

cat();
tiger();

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

fixxxer

К.О.
Партнер клуба
конечно же нет, это вообще не про ООП ;) я вот все жду вопроса к моему примеру на си про (с придыханием...) полиморфизм и вспоминаю как там пишутся указатели на функции =)
 

AmdY

Пью пиво
Команда форума
PHP:
class animal {
protected _legs = 4;
function getLegs(){ //сколько ног у животных
echo $this->_legs;
}
}
class cat extends animal{
... 
} 
$cat = new cat;
$cat->getLegs;//4
$tiger = new tiger;
$tiger->getLegs;


// сравни с тоже оопшной реализацией с процедурным подходом
$cat = array();
$cat['legs'] = 4;  //объект котик с атрибутом ножки со значением 4
$man = array();
$man['legs'] = 2; /объект человечек с атрибутом ножки со значением 2
function getLegs($object) {
    return $object['legs'];
}
не надо противопостовлять ооп процедурному программированию, в большинстве случаев можно делать и так и так, только ооп упрощает работу с сущностями, атрибутами и методами, загоняя это в единое пространство класса. кстати, ноплохой способ - взять книгу по ооп и попробовать реализовать примеры с процедурным подходом.
 

fixxxer

К.О.
Партнер клуба
ну вот пришел и все испортил, а как же потроллить?
 

HraKK

Мудак
Команда форума
Я не про свое, а про то что граммотное апи можно написать и на процедурном программировании :)
 

craz

Нестандартное звание
Автор оригинала: AmdY
PHP:
class animal {
protected _legs = 4;
function getLegs(){ //сколько ног у животных
echo $this->_legs;
}
}
class cat extends animal{
... 
} 
$cat = new cat;
$cat->getLegs;//4
$tiger = new tiger;
$tiger->getLegs;


// сравни с тоже оопшной реализацией с процедурным подходом
$cat = array();
$cat['legs'] = 4;  //объект котик с атрибутом ножки со значением 4
$man = array();
$man['legs'] = 2; /объект человечек с атрибутом ножки со значением 2
function getLegs($object) {
    return $object['legs'];
}
не надо противопостовлять ооп процедурному программированию, в большинстве случаев можно делать и так и так, только ооп упрощает работу с сущностями, атрибутами и методами, загоняя это в единое пространство класса. кстати, ноплохой способ - взять книгу по ооп и попробовать реализовать примеры с процедурным подходом.
пример безмерно крут ,правда, без иронии, но вы сами как предпочли бы использовать конструкции?
как класс и его метод? или как функция написаная фик нает где и в каком файле, а потом еще может быть переписанная.

В любом случае ваш пример это только реализация подхода, как бы его эмулирование, что кстати никак не влияет на его офигенность) я бы долго думал как ооп написать без ооп...
 

Духовность™

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

AmdY

Пью пиво
Команда форума
craz
довелось использовать данный подход. был один проект, в котором нужно было немножко подправить. немножко дописать и реализовать более менее удобное реиспользование. так как код был практически линейный, то самым простым было повторяющиеся вещи вынести в функции, добавил префиксы, длинные названия типа нэймспэйс_сущность_метод(). получился оопэшный код на процедурах, в который было удобно вносить правки и расширять и главное - его могли понять программисты значительно более низкого уровня. вот только не понравилось, что не был соблюдён единый стиль и прочие плюшки, которые почти с коробки получается при использовании слова class, но первый блин всегда комом :(.
 
Сверху