Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
igor001
8 / 3 / 2
Регистрация: 12.02.2013
Сообщений: 68
1

Применение принципов ООП на практике (мнение о приведенном коде)

02.04.2013, 14:52. Просмотров 1038. Ответов 4
Метки нет (Все метки)

для ленивых: 1й абзац можно пропустить )
В силу обстоятельств я начал работать, изучать программирование и писать программу (по квесту на работе) одновременно. Товарищи коллеги, во всяком случае некоторые из них, пытались мне помогать и подучивать по мере возможностей хотя они и сами не программисты по профессии (один весьма не плохой php фрилансер, другой начинающий delphi кодер). Мне показали что есть такая удобная штука как класс и попытались объяснить как им пользоваться, но увы тогда для меня это было как для мартышки очки и я использовал только конструктор класса и считал что это круто. В данный момент я, во всяком случае мне так кажется, познал истинную ценность классов и научился с ними работать, но все же просматривая код написанный мною ранее мне плакать хочется. Это был бы не я, если бы не попытался исправить свои ошибки, тем более что это мне с ними мучатся)).

Подойдем к сути проблемы. В разработке прикладных программ у меня на работе, на сколько я знаю, никто нормально не шарит, поэтому и пишу сюда.

Идея состоит в следующем: есть несколько типов таблиц (в данный момент 3, но кто знает сколько их будет завтра ) поэтому я решил создать класс "Tables" который их бы описывал и либо перегрузить конструктор класса либо использовать функции для создания различных типов таблиц. Предполагается что таблицы размещаются в различных вкладках в основном окне программы (в одной вкладке n таблиц одного типа) для чего я создал класс "Page", являющийся производным от класса "Tables". Но так как опыта в разработке программ у меня практически 0, да и с наследованием и иерархией классов я познакомился буквально пару дней назад я весьма не уверен в правильности подхода, а так как еще и подсказать некому то это вообще пи.... в общем северный пушистый зверек.
Хотелось бы узнать авторитетное мнение более опытных программистов и услышать их критику. Ниже привел наброски того как, по моему мнению, должна быть решена эта задача. Заранее спасибо.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
//==========================================================================
//класс создания таблиц
class Tables
{
    private:
        TStringGrid* table;
        TGroupBox*   tab_box;
 
        UnicodeString name;
 
        //for editor------------------------------------------->>
        TPanel*    panel;       //панель, содержащая элементы редактора таблиц
        TButton*   save;        //кнопка для сохранения отредактированной таблицы
        TButton*   add_row;     //кнопка для увеличения количества строк таблицы
        TButton*   del_row;     //кнопка для уменьшения количества строк таблицы
        TComboBox* tab_type;    //выпадающий список, позволяющий выбрать тип таблицы
        TEdit*     count_add;   //поле для определения количества строк для добавления/удаления в/из таблицы
        //for editor-------------------------------------------<<
 
        bool table_create();    //ф-ция для создания таблицы
        bool editor_create();   //ф-ция для создания таблицы-редактора
        bool statistic_create();//ф-ция для создания таблиц статистики обмена
 
    public:
        Tables(){}
 
        Tables(UnicodeString& str,      //название таблицы
               TTabSheet*     sheet)    //вкладка, которой пренадлежит таблица
        {
            tab_box          = new TGroupBox(sheet);
            table            = new TStringGrid(tab_box);
        }
};//class create_table
//==========================================================================
 
//==========================================================================
//класс вкладки, содержащей таблицы
class Page : public Tables
{
    private:
        TTabSheet* sheet;
 
        typedef map<UnicodeString&, Tables&> table_map; //контейнер, содержащий таблицы и их названия
 
    public:
        void tables_draw(); //функция авторазмещения таблиц во вкладке
 
        Page(TPageControl* parent)
        {
            sheet = new TTabSheet(parent);
        }
};//class Page
//==========================================================================
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.04.2013, 14:52
Ответы с готовыми решениями:

Использование принципов ООП для поиска в файлах разного типа
Хотя бы намекните с чего начать. Может у кого то было подобное. Исходные данные Каталоги с...

Применение SOLID принципов
Всем доброго времени суток, Есть плохо написанный код машины Тьюринга на Java: package tm;...

Объяснение принципов ООП
Простите если пишу не в той ветке. Уважаемые старшие братья, великие гуру, наставники и просто...

Справочник с соблюдением принципов ООП
Доброго времени суток! Имеются классы: namespace Spravochnik { public class User ...

Реализация принципов ООП на примере
Задача проекта должна содержать примеры реализации основных принципов обьектно-ориентированного...

4
Jupiter
Каратель
Эксперт С++
6573 / 3994 / 400
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
02.04.2013, 16:16 2
Цитата Сообщение от igor001 Посмотреть сообщение
есть несколько типов таблиц
каких таблиц? следует разделять данные, логику обработки данных, способ отображения данных.
0
igor001
8 / 3 / 2
Регистрация: 12.02.2013
Сообщений: 68
02.04.2013, 16:52  [ТС] 3
2 типа таблиц заполняются данными из прибора, соединенного с ЭВМ через RS-232 (т.е. в одну вкладку в 2 необходимо отображать что-то вроде лога обмена данными с прибором а в другую выводить значения параметров) и один тип таблиц для редактирования (добавлять/убирать параметры и т.п.).

Добавлено через 1 минуту
для чтения/записи через RS использую поток и написанный мною класс

Добавлено через 2 минуты
ЗЫ все-таки решил использовать перегрузку конструктора имхо это, на мой взгляд, наиболее оптимальный вариант
0
gray_fox
What a waste!
1557 / 1262 / 166
Регистрация: 21.04.2012
Сообщений: 2,642
Завершенные тесты: 3
02.04.2013, 16:58 4
Цитата Сообщение от igor001 Посмотреть сообщение
//класс вкладки, содержащей таблицы class Page : public Tables
Я не понял, зачем здесь наследование.
Цитата Сообщение от igor001 Посмотреть сообщение
есть несколько типов таблиц (в данный момент 3, но кто знает сколько их будет завтра ) поэтому я решил создать класс "Tables" который их бы описывал и либо перегрузить конструктор класса либо использовать функции для создания различных типов таблиц.
Может проще наследовать каждый новый тип таблицы от базового класса? В Page хранить указатели на этот базовый класс.
0
igor001
8 / 3 / 2
Регистрация: 12.02.2013
Сообщений: 68
02.04.2013, 17:22  [ТС] 5
правильно, я хотел в классе "Рage" хранить контейнер указателей или ссылок на класс таблиц. но я уже догнал что у меня, в приведенном примере, наследование неправильное. Полагаю в данной ситуации необходимо создать абстрактный класс, связывающий класс таблицы и вкладки
0
02.04.2013, 17:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.04.2013, 17:22

Написать программу с использованием 3 принципов ООП
Здравствуйте! нужно написать программу с использованием 3 принципов ООП в java....

Нужна идея по реализации принципов ООП
Есть программа Калькулятор , написанная на языке С++,выполняющий &quot; +,-,*,/,степень,корень и...

Применение на практике
Доброго {TimeOfDay}. У меня возник вопрос:Помагают ли олимпиадные задачи в работе программиста?...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru