![]() |
flash наследование помогите врубиться
Всем привет! Написал класс кнопки файл и раньше бы я, не особо заморачиваясь, копипастом сделал бы еще 10 кнопок:)(что я и начал делать), пока не вспомнил о том что было бы не плохо написать базовый класс кнопка и туда написать весь повторяющийся код. Тут то и начались проблеммы... Как собственно говоря разбить этот класс на 2(базовый и File) ? У меня что-то не получается, если написать "культурно", лезут ошибки, если с "костылями", тогда уж лучше без наследования - меньше быдлокода. Помогите пожалуйста, как правильно написать код? Никогда раньше не писал свои классы через наследование.
Вот мой класс кнопки "файл", весь код что будет здесь, повторяющийся в других кнопках, кроме Цитата:
Код AS3:
|
Если все инстансы кнопок будут отличаться только параметром buttonOptions,
то передавайте этот параметр конструктору. Код:
public class ConcreteFile extends File{ |
А лучше вообще избавиться от этого объекта buttonOptions, и создать у всех кнопок геттеры / сеттеры для нужных свойств. И в дальнейшем вообще использовать Object (и вообще динамические классы) только в случае крайней необходимости. Это часто приводит к таким недопониманиям, при чтении кода кем-то другим, или самим разработчиков в будущем, что лучше заранее создать явные поля и не задумываться какие параметры должны передаваться кнопке
|
Цитата:
Это я создаю текст филд 1 строкой, чтобы не городить 15 строк кода(которые тоже повторяются) для каждой кнопки. По моему так гораздо удобнее, да и код достаточно прозрачный, как мне кажется... Код AS3:
Спасибо что отписались. |
Начерта здесь наследование?
|
Можно конечно же и просто написать 1 кнопку и накопиросать ее нужное количество раз, да переименовать название класса. Но будет просто 10 кнопок с одинаковым кодом примерно 10 функций.
Т.е 1500 строк тупого повторения кода... что конечно же с точки зрения программирования не правильно, если есть возможность не писать повторяющийся код, его лучше не писать. |
Ну вот у вас есть класс File (странноватое название для кнопки). Чем он вас не устраивает? Зачем плодить еще дополнительные классы?
|
Я вообще перестал Вас понимать.
При чем тут наследование (разные классы, расширяющие 1 базовый)? Разные классы должны иметь разный набор свойств и методов. Разный набор ЗНАЧЕНИЙ свойств могут иметь ЭКЗЕМПЛЯРЫ одного класса. |
Ну это кнопка файл вроде как норм название для кнопки менюшки верхней как у ворде, с выпадающими меню. Будет еще несколько "похожих": редактирование(Edit), просмотр(View), слой(Layer), язык(Language) и т.д.
Все классы кнопок я поместил в отдельный пакет, куда ничего кроме реализации этих кнопок я не буду кидать. Можно переименовать ее с файл File на FileButton, или как то так... Может я чего-то и не так делаю, просто я больше привік к функциональному программированию, а не обьектному. Все мои обьекты, что я писал, были без наследования - такие как есть и ничего больше... Добавлено через 6 минут Цитата:
Мне нужно создать выпадающие меню(вроде как комбобоксы, как главное меню ворда). Будут кнопки-обьекты с несколькими строками одинакового кода и разного. Я решил что будет более правильно создать базовый класс, скажем Button с одинаковыми функциями и его уже extend-ить, создавая такие кнопки как File, Edit со своими пунктами меню, функциями печати, или масштабирования(в зависимости от кнопки). Вот и решил спросить у более опытных коллег, насколько правильный подход и как вообще правильно писать код в такх случаях... |
Для кнопки создайте 1 класс. Кнопка только для того чтобы на неё нажимать. Для более сложных операций создавайте другие классы-менеджеры которые будут этим заниматься, не кидайте всю логику в кнопку.
|
| Часовой пояс GMT +4, время: 11:58. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.