Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Флейм (http://www.flasher.ru/forum/forumdisplay.php?f=53)
-   -   Хорошее ООП?! (http://www.flasher.ru/forum/showthread.php?t=116074)

CEBEP 19.09.2008 15:59

Ну возьмём к примеру создание Меню для сайта.

Хороший ООП, я думаю это такой, в данном случае:
Код можно использвать для создание разных меню без особых дороботок, все части кода по созданию менюшек и сабменюшек к друг другу не лезут, данные хранятся в xml и доступны для изменения структуры, не должна быть проблема создания меню как горизонтально и вертикально и т.д. что то вроде такого...

Nemo_c 19.09.2008 16:04

to wvxvw
Из книги "ActionScript 3.0 Design Patterns"
Код:

package
{
//This is BAD OOP -- No encapsulation

import flash.text.TextField;
import flash.display.Sprite;
public class NoEncap extends Sprite
{
public var dogTalk:String="Woof, woof!";
public var textFld:TextField=new TextField( );
public function NoEncap( )
{
addChild(textFld);
textFld.x=100;
textFld.y=100;
}
function showDogTalk( )
{
textFld.text=dogTalk;
}
}
}

Код:

package
{
//This is GOOD OOP -- It has encapsulation
import flash.text.TextField;
import flash.display.Sprite;
public class Encap extends Sprite
{
private var dogTalk:String="Woof, woof!";
private var textFld:TextField=new TextField( );
public function Encap( )
{
addChild(textFld);
textFld.x=100;
textFld.y=100;
}
function showDogTalk( )
{
textFld.text=dogTalk;
}
}
}

William Sanders и Chandima Cumaranatunge видимо не знакомы с вашей концепцией и поэтому пишут всякую "чушь" в своей книге.

to CEBEP.
Нужны критерии в терминах ООП и AS3(как то так), а своими словами вы сейчас говорите абстрактно.

wvxvw 19.09.2008 16:09

>> William Sanders и Chandima Cumaranatunge видимо не знакомы с вашей концепцией и поэтому пишут всякую "чушь" в своей книге.

Именно так.

Да, и кавычки к чушь абсолютно ни к чему.

Chas 19.09.2008 16:10

чё-то или я тупой, или приведенный выше код отличается только именем класса и конструктора о_О
добавлено
а, господи, нада кофе выпить, свойства сделал приватными. Но это не лучший пример инкапсуляции. Это как раз тот случай, когда "инкапсуляция ради инкапсуляции"

wvxvw 19.09.2008 16:20

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

Chas 19.09.2008 16:30

Ну это ты перебарщиваешь. Где там дрова-то?
Как пример инкапсуляции - пример плохой. Нужно было что-то с геттерами и сеттерами придумать, где необходимо спрятать переменную, которую сеттер меняет, чтобы ее не трогали.
А так - обычный код, где там дрова-то? То, что showDogTalk не public функция?

wvxvw 19.09.2008 16:37

Нет явного вызова super()
У метода отсутствует модификатор доступа / неймспейс.
У метода отстутствует возвращаемый тип.
Приватные переменные - это первый шаг на пути усложнения реюз / полиморфизма, в этом примере они должны были быть protected. (т.е. показав пример одного из принципов ООП тут же забили на остальные - офигительный мануал...)

Помоему, этого достаточно, чтобы закрыть эту книжку, и почитать чего-нибудь другое =)

ЗЫ. И вообще, классный мануал, если ты его просто копипастишь, компилируешь, и компилятор тебе ворнинг выдает? :D И это в двух с половиной строчках, чего ж там дальше-то будет? =)

Nemo_c 19.09.2008 16:38

Цитата:

при этом наломав столько дров, что глядя на такой код, думается, что есть люди, которым лучше все-таки читать книги, а не писать их =)
АГА, Значит плохой ООП код всё таки существует? как и существует плохой третий закон Ньютона.
Где в приведённом мною примере дрова наломаны? И как вы это определили?

Цитата:

показав пример одного из принципов ООП тут же забили на остальные
не, про остальные они пишут дальше.. это пример из начала книги.

wvxvw 19.09.2008 16:42

Существует плохо написаный код - вы только что запостили 2 примера. А ООП это понятие, которое нельзя характеризовать с позиций дуализма - оно не на столько комплексное.

Chas 19.09.2008 16:48

Цитата:

Приватные переменные - это первый шаг на пути усложнения реюз / полиморфизма, в этом примере они должны были быть protected. (т.е. показав пример одного из принципов ООП тут же забили на остальные - офигительный мануал...)
ну это не аргумент, это зависит от целей. Может он в этом случае именно хотел запретить детям видеть свойство.
Цитата:

У метода отсутствует модификатор доступа / неймспейс.
ну это тоже не аргумент. Он же не собственную библиотеку пишет, а простой пример.
Все остальное - да. Но вообще я, походу,сам плохой ООП-программер, потому что частенько эти вещи опускаю из-за лени. Следствие небольших проектов, которые пишу обычно исключительно один.


Часовой пояс GMT +4, время: 09:32.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.