Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Создание корзины интернет магазина с использованием стека http://www.cyberforum.ru/cpp-beginners/thread825838.html
помогите пожалуйста написать такую ​​программу, я в отчаянии Если не напишу то завалю курсач, а как это написать понятия не имею :cry: чрезвычайно сильно прошу помочь с этим!!
C++ Учет пациентов в поликлинике с++ Создать программу для учета больных в ПОЛИКЛИНИКЕ. необходимо хранить: Сущность 1. Пациент: id ФИО Возраст Пол Участок Сущность 2. Участок: http://www.cyberforum.ru/cpp-beginners/thread825814.html
C++ Построение графика
как сделать,чтобы строился график по данным находящимся в R и C функция C=f(R)
Ошибка при удалении динамически выделенной памяти C++
Добрый день, хочу удалить выделенный массив, но выдает ошибку. Вот собственно код создаваемой функции. using namespace std; void FillStruct(VideoShop *a, int n) { char *buff = new char ; int...
C++ организация разветвленной иерархии классов http://www.cyberforum.ru/cpp-beginners/thread825787.html
Цель: организовать разветвленную иерархию классов с применением абстрактных классов. Нужна помощь в разъяснении самого задания Добавлено через 40 минут Задание: создать иерархию классов:...
C++ В каждом байте перенести все единичные биты в середину Помогите написать программу(С++)В каждом байте перенести все единичные биты в середину. подробнее

Показать сообщение отдельно
igor001
8 / 3 / 1
Регистрация: 12.02.2013
Сообщений: 68

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

02.04.2013, 14:52. Просмотров 940. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru