Classes - первые шаги...

Статус
В этой теме нельзя размещать новые ответы.

[slon]

Guest
Classes - первые шаги...

обстоятельства вынуждают столкнуться с классами. перелапатил кучу всяких статей но толком так ничерта и не понял.

просьба: напишити простенький класс по которому я могбы "поучиться"...
или может кто подскажет какойнить хороший сайт где все разжевано?

спасибо.
 

[VS]

Guest
Re: Classes - первые шаги...

Автор оригинала: [slon]
обстоятельства вынуждают столкнуться с классами. перелапатил кучу всяких статей но толком так ничерта и не понял.
просьба: напишити простенький класс по которому я могбы "поучиться"...
или может кто подскажет какойнить хороший сайт где все разжевано?
спасибо.
Возникает вопрос - нафига тебе классы если ты не знаешь что это?
Ну вот тебе класс
class A { function foo() { echo "A";} }
и много еще есть в мануале.

по поводу OOP в PHP смотри
http://www.digiways.com/articles/php/phpoop/
 

[slon]

Guest
Re: Re: Classes - первые шаги...

Автор оригинала: [VS]
Возникает вопрос - нафига тебе классы если ты не знаешь что это?
Да, ты прав я не знаю что это такое. Но я знаю что мне надо их знать. Вот и пытаюсь с чего то начать....
 

[VS]

Guest
Re: Re: Re: Classes - первые шаги...

Автор оригинала: [slon]
Да, ты прав я не знаю что это такое. Но я знаю что мне надо их знать. Вот и пытаюсь с чего то начать....
Начинать нужно не с реализации на PHP а с изучения идеологии OOP. И за пару недель ее не изучишь. Да и практики нужно дофига что-бы правильно применять.
 

Alien

Новичок
Когда я сдавал экзамен по паскалю (8 лет назад ... мама мия ) преподу безумно понравилась примитивная прога из 20 строчек - зато со всякими классами, конструкторами, наследованиями и т.п. :D

Если тебе ООП нужно для экзамена - то 2-х недель хватит.
Если писать код - читай учебник.
 

[slon]

Guest
Да нет, мне какбы для себя надо...

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

[VS]

Guest
Автор оригинала: Альен
Если тебе ООП нужно для экзамена - то 2-х недель хватит.
Если писать код - читай учебник.
Для экзамена нужно не OOP а нужно заучить набор слов и действий.
 

gam

Guest
ИМХО: Вообще изучать ООП на основе ПХП не стоит, т.к. из трех основных принципов ООП php обеспечивает более или менее нормально только один - (наследование) да и то с некоторыми ограничениями...
Лучше взять док. по ООП, не привязанную к конкретному языку...
 

_Fester_Adams

Guest
Автор оригинала: gam
ИМХО: Вообще изучать ООП на основе ПХП не стоит, т.к. из трех основных принципов ООП

Правильно. И Гради Буч - что дохтур прописал

php обеспечивает более или менее нормально только один - (наследование) да и то с некоторыми ограничениями...

Не надо - полиморфизм также поддерживается - смотри форум за прошлый год - был большой флейм на эту тему

Лучше взять док. по ООП, не привязанную к конкретному языку...
 

gam

Guest
Не надо - полиморфизм также поддерживается - смотри форум за прошлый год - был большой флейм на эту тему
Да о каком полиморфизме можно говорить, если даже перегрузка методов не поддерживается?!
 

[VS]

Guest
Автор оригинала: gam
ИМХО: Вообще изучать ООП на основе ПХП не стоит, т.к. из трех основных принципов ООП php обеспечивает более или менее нормально только один - (наследование) да и то с некоторыми ограничениями...
Лучше взять док. по ООП, не привязанную к конкретному языку...
бред. если есть аргументы - приводи.
мои аргументы на
http://www.digiways.com/articles/php/phpoop/
 

[VS]

Guest
Автор оригинала: gam
Да о каком полиморфизме можно говорить, если даже перегрузка методов не поддерживается?!
Похоже ты сам не знаешь что такое полиморфизм и перегрузка методов. Почитай мою статью на эту тему. Если все еще не поймешь - перечитай как я тут это-же обьяснял людям несколько раз. В поиск по форуму.
 

gam

Guest
Автор оригинала: [VS]
Похоже ты сам не знаешь что такое полиморфизм и перегрузка методов. Почитай мою статью на эту тему. Если все еще не поймешь - перечитай как я тут это-же обьяснял людям несколько раз. В поиск по форуму.
Ну да конечно, куда мне, дураку такому. Вот поэтому и хожу в форум, чтобы - ума набраться, но не чтоб слушать - "да ты чо - с батей споришь?! Иди методичку сначала мою почитай"...
К сожалению Г. Буча под рукой нет (надеюсь, его авторитету сможешь поверить?), поэтому беру книгу по Java2, написанную в соавторстве с одним из ее разработчиком.
Итак.
Цитата: Полиморфизм - свойство, которое, позволяет использовать один интерфейс для общего класса действий.
Далее.
В Java в пределах одного класса можно определить 2 или более методов, которое совместно используют одно и тоже имя, но имеют разно кол-во параметров. (в PHP - в пред. 1-ого класса - тока один!) . - это собственно и есть нормальная перегрузка, как я ее понимаю.
Цитата: Перегрузка методов - один из способов, с помощью которых Java реалиует полиморфизм. Ага! Java есть язык отстойный, делает все через на, и вообще не соблюдает принципы ООП.

В чем я был так не прав?! Конечно - основной аспект полиморфизма - это концепция интерфейсов, абстрактных классов и т.д.... Где я говорил, что это не так?!

Что же касается статьи - да, действительно, круто. Я действительно о многих возможностях PHP с такой стороны не задумывался, а о многих и вообще не знал, и не скрываю этого.
Но: перегрузка методов через дочерние классы - не есть красивое решение. Если есть 10 оных, для каждого надо создать свой класс, да еще и определить затем в одном месте.
Все остальные недостатки PHP как ООП языка, ксати, представлены в этом же документе.
 

[VS]

Guest
Автор оригинала: gam
К сожалению Г. Буча под рукой нет (надеюсь, его авторитету сможешь поверить?), поэтому беру книгу по Java2, написанную в соавторстве с одним из ее разработчиком.
я не понял, Бучь или твоя книжка по Яве что-то пишут именно о PHP? Или ява по твоему - показатель OOP языка?

Цитата: Полиморфизм - свойство, которое, позволяет использовать один интерфейс для общего класса действий.
Понимаешь, это не учебник истории социализма. Тут нет таких жетских формулировок. К тому-же, в PHP это замечательно есть.

Далее.
В Java в пределах одного класса можно определить 2 или более методов, которое совместно используют одно и тоже имя, но имеют разно кол-во параметров. (в PHP - в пред. 1-ого класса - тока один!) . - это собственно и есть нормальная перегрузка, как я ее понимаю.
внимательно перечитай мою статью, там про это подробно написано.

Перегрузка методов - один из способов, с помощью которых Java реалиует полиморфизм
Чем тебе не нравится то как работает перегрузка методов в PHP?

это концепция интерфейсов, абстрактных классов и т.д.... Где я говорил, что это не так?!
и эта концепция замечательно работает с PHP.

Но: перегрузка методов через дочерние классы - не есть красивое решение.
Стоп, а где ты видел перегрузку методов без создания дочернего класса?

Если есть 10 оных, для каждого надо создать свой класс, да еще и определить затем в одном месте.
Зачем, создаешь один дочерний класс и в нем все нужное определяешь. Как и во всех других языках.
 

gam

Guest
>я не понял, Бучь или твоя книжка по Яве что-то пишут именно о PHP

они пишут о к классической концепции ООП.

> Или ява по твоему - показатель OOP языка?

приведи лучше

> Понимаешь, это не учебник истории социализма. Тут нет таких жетских формулировок. К тому-же, в PHP это замечательно есть.

где ж она жесткая?? как раз наиболее абстракная формулировка.

Чем тебе не нравится то как работает перегрузка методов в PHP?
> уже написал

>Стоп, а где ты видел перегрузку методов без создания дочернего класса?

В той же Java все отлично реализовано

class OverloadDemo {
void test () {
System.out.println("Парам. отсутст.")
}

void test (int a) {
System.out.println("один int парам.")
}

void test (double a) {
System.out.println("один double парам.")
}
и т.д.

}

> Зачем, создаешь один дочерний класс и в нем все нужное определяешь. Как и во всех других языках.

Не понял. А если нужно больше одной перегрузки? (см. пример выше)

Кроме того. Когда я писал свой первый ответ, я написал ИМХО -с моей личной точки зрения. Заметь. Я везде старался сказать "по моему так удобнее...", а не "так правильно", поскольку профессионалом себя в этой области не считаю. Да и вообще программирование для меня - скорее хобби, нежли средство зарабатывания денег. Поэтому конечно и знаю не так много, как хотелось бы - на все время не хватит. Если вы все так упорно твердите что я не прав, значит наверное не прав. Если выучусь - узнаю :)
Удачи...
 

[VS]

Guest
небольшое дополнение.
Возможность иметь несколько функций в одном классе с одним именем и разным набором параметров -
не имеет никакого отношения к "перегрузки функций".
 

gam

Guest
Автор оригинала: [VS]
небольшое дополнение.
Возможность иметь несколько функций в одном классе с одним именем и разным набором параметров -
не имеет никакого отношения к "перегрузки функций".
Да почему???
Я почти не знаю С++, но насколько я знаю - там (насчет перегрузок) действительно, как ты говоришь.
Я писал про Java - язык, как я читал почти ВЕЗДЕ, наиболее полно и правильно реализующий концепцию ОПП.
Там прям черным по белому написано насчет перегрузок - то, что я сказал.
Вот почему я и говорил (см. выше) не надо привязываться к языкам при изучении ООП - а то получится то, что получилось сейчас.
 

[VS]

Guest
Автор оригинала: gam
Там прям черным по белому написано насчет перегрузок - то, что я сказал.
Где написано? Мне действительно интересно.
Я всегда считал, что перегрузка функции это
class A
{
int foo(int a) { return a; }
};
class B : public A
{
int foo(int a) { return a+1; }
};
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху