Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
vbloodv
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314
#1

Помощь в архитектуре - C++

20.09.2013, 18:07. Просмотров 448. Ответов 11
Метки нет (Все метки)

Здравствуйте самые больные места у моих приложений, как и у многих начинающих это не код, а архитектура. Какой должна быть архитектура, приведите примеры .h заголовочного файла в спойлире к примеру для класса виджет (можно image, picture) и какие-то нарекания по количеству методов, количеству строк в определении, использованию наследования и т.д.

Для примера:
Кликните здесь для просмотра всего текста

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
#pragma once
#include <Windows.h>
#include <string>
#include <vector>
#include "hge/hge.h"
 
extern HGE * hge;
 
class Picture
{
    std::string name_;
    hgeQuad quad_;
    float x_,y_,w_,h_,zoom_;
public: 
        
             Picture(HTEXTURE texture, float x, float y, float w, float h);
             ~Picture();
        bool IsVisible;
        void SetName(std::string & name);
        void SetPosition(float x, float y);
        void SetSize(float w, float h);
        void SetZoom(float zoom);
        void SwitchView();
        void Draw(); 
        void Delete();
     hgeQuad * GetQuad(); 
    HTEXTURE * GetTexture(); 
};

Кликните здесь для просмотра всего текста

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
#pragma once
#include <Windows.h>
#include <math.h>
#include <list>
#include <algorithm>
#include <deque>
#include "boost/shared_ptr.hpp"
#include "boost/ptr_container/ptr_vector.hpp"
#include "c_Picture.h"
#include "userdata.h"
class Cup:virtual public Picture
{
private:
    bool bPressed,bFocus,bMoved,bMouseLeft,bMouseRight;
    HTEXTURE texture2;
    int iColor;
    point2d pointWay;
    std::list<point2d> Way;
public:
    int iNumber;
    std::string GetId();
    void CheakMouseFocus(float x,float y); 
    void CheakMouseLeftButton(bool event); 
    void CheakMouseRightButton(bool event);
    void PressCup(); 
    void Move();
    void MoveToPoint(float x,float y); 
    bool IsFocus(void); 
    bool IsPressed(void);
    bool IsMoved(void);
    void SetTexture(HTEXTURE texture);
    void SetTexture2(HTEXTURE texture);
    int GetWaySize();
    hgeQuad * GetQuad(); 
};


И такие замечания тоже, приветствуются:
приватные поля лучше: m_field, filed_, _field;
Публичные булевые: IsBooled;
Методы которые используются только внутри класса:
inline и private
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.09.2013, 18:07     Помощь в архитектуре
Посмотрите здесь:

Литература по архитектуре приложений на С++ - C++
Доброго времени суток. Мне нужно написать большой графический проект на С++. Для всего этого выбрал Qt. Что из себя...

Помощь по С++. - C++
Задача должна считать минимальный элемент каждой четной строки матрицы, она не работает подскаэите что не так #include &quot;stdafx.h&quot; ...

Помощь С++ - C++
Помогите доразбираться в коде, не могу понять, что нужно дальше сделать :( Вот сам код - #include&lt;iostream&gt; #include&lt;math.h&gt; ...

Помощь по программе - C++
Пожалуйста, помогите! Расскажите мне о кодах объектах и функциях в ФАСМ. Я назову объекты, а вы скажите мне пожалуйста, их коды и функции...

Помощь с шахматами - C++
Вобщем задали нам задания с помощью условных операторов запрограммировать данные задачи. А так как я с шахматами не дружу это крайне трудно...

Помощь с управлением - C++
// IS-123k #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;stdio.h&gt; #include &lt;Windows.h&gt; #include &lt;mmsystem.h&gt; #define...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Fyret
184 / 170 / 13
Регистрация: 30.07.2013
Сообщений: 359
20.09.2013, 18:20     Помощь в архитектуре #2
Ну вот я вижу проблемы как раз с кодом:
- невиртуальный деструктор у полиморфного класса;
- открытые данные-члены;
- полное отсутствие константных методов (неужели Draw что-то меняет внутри объекта?)

Как обзывать данные и методы - это вопрос код-стайла, тут кто во что горазд или как принято.
Методы, которые используются только внутри - конечно же private (или protected), inline - вообще не о том.

Об архитектуре сложно судить по паре хедеров.
Croessmah
Модератор
Эксперт CЭксперт С++
13057 / 7320 / 817
Регистрация: 27.09.2012
Сообщений: 18,066
Записей в блоге: 3
Завершенные тесты: 1
20.09.2013, 18:38     Помощь в архитектуре #3
Цитата Сообщение от Fyret Посмотреть сообщение
невиртуальный деструктор у полиморфного класса;
где полиморфизм?
Fyret
184 / 170 / 13
Регистрация: 30.07.2013
Сообщений: 359
20.09.2013, 18:39     Помощь в архитектуре #4
Цитата Сообщение от Croessmah Посмотреть сообщение
где полиморфизм?
C++
1
class Cup:virtual public Picture
Croessmah
Модератор
Эксперт CЭксперт С++
13057 / 7320 / 817
Регистрация: 27.09.2012
Сообщений: 18,066
Записей в блоге: 3
Завершенные тесты: 1
20.09.2013, 18:40     Помощь в архитектуре #5
Цитата Сообщение от vbloodv Посмотреть сообщение
_field;
так не надо лучше

Добавлено через 14 секунд
Fyret, это виртуальное наследование
Fyret
184 / 170 / 13
Регистрация: 30.07.2013
Сообщений: 359
20.09.2013, 18:42     Помощь в архитектуре #6
Цитата Сообщение от Croessmah Посмотреть сообщение
это виртуальное наследование
И? Оно там просто так, для галочки?
Croessmah
Модератор
Эксперт CЭксперт С++
13057 / 7320 / 817
Регистрация: 27.09.2012
Сообщений: 18,066
Записей в блоге: 3
Завершенные тесты: 1
20.09.2013, 18:44     Помощь в архитектуре #7
Цитата Сообщение от Fyret Посмотреть сообщение
Оно там просто так, для галочки?
например, для ромбовидного наследования.
Fyret
184 / 170 / 13
Регистрация: 30.07.2013
Сообщений: 359
20.09.2013, 18:46     Помощь в архитектуре #8
Цитата Сообщение от Croessmah Посмотреть сообщение
например, для ромбовидного наследования.
Ну а дальше? Ромбовидное наследование для чего? Для чего вообще в 99% используется наследование? Уж не для полиморфизма ли?
Croessmah
Модератор
Эксперт CЭксперт С++
13057 / 7320 / 817
Регистрация: 27.09.2012
Сообщений: 18,066
Записей в блоге: 3
Завершенные тесты: 1
20.09.2013, 18:48     Помощь в архитектуре #9
Цитата Сообщение от Fyret Посмотреть сообщение
Для чего вообще в 99% используется наследование? Уж не для полиморфизма ли?
ну если Вы только для этого используете, то увольте

Не по теме:


Даже спорить не хочу...

Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
21.09.2013, 01:00     Помощь в архитектуре #10
Цитата Сообщение от vbloodv Посмотреть сообщение
#include "hge/hge.h"
Цитата Сообщение от vbloodv Посмотреть сообщение
#include "boost/shared_ptr.hpp"
not good.
делаем так что бработало
#include <hge/hge.h>

т.е. не просто кидаем либу в проект, а прописываем пути в конфигах/опциях проекта

Добавлено через 3 минуты
Цитата Сообщение от vbloodv Посмотреть сообщение
C++
1
2
3
int iColor;
 point2d pointWay;
std::list<point2d> Way;
уж определись, используешь венгерскую нотацию или нет, по мне так лучше без неё но
Цитата Сообщение от vbloodv Посмотреть сообщение
приватные поля лучше: m_field, filed_, _field;
с префиксом mField

Добавлено через 1 минуту
Цитата Сообщение от vbloodv Посмотреть сообщение
class Cup:virtual public Picture
для чего тут виртуальное наследование?
fridi
-8 / 40 / 1
Регистрация: 21.09.2009
Сообщений: 145
21.09.2013, 01:05     Помощь в архитектуре #11
C++ (Qt)
1
2
3
void CheakMouseFocus(float x,float y); 
void CheakMouseLeftButton(bool event); 
void CheakMouseRightButton(bool event);
с ошибкой
CheckMouseRightButton(bool event)
p.s тут конечно дело вкуса, но старайся не делать таких ошибок
p.s не забывай про обработку ошибок.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.09.2013, 12:23     Помощь в архитектуре
Еще ссылки по теме:

Небольшая помощь - C++
Ктото может написать небольшой модуль которий будет считивать какуюта інформацию с файла *тхт каждих 2 сек ?? спс

[помощь по литературе] - C++
Здраствуйте, ищу литературу на такую тему как, с помощью С++ выключать компьютер, открывать CD-rom, выключать монитор, в общем по...

Помощь экспертов - C++
как можно автоматически создавать названия функции т.е. как можно сгенерировать название функции. Пример. имеется такая задача: что в...

Помощь в расшифровке - C++
Собственно нужно расшифровать (конфиг файл игры) ...


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

Или воспользуйтесь поиском по форуму:
vbloodv
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314
21.09.2013, 12:23  [ТС]     Помощь в архитектуре #12
Код старый выудил, поэтому возникло много вопросов ))) :
Цитата Сообщение от Fyret Посмотреть сообщение
полное отсутствие константных методов (неужели Draw что-то меняет внутри объекта?)
Да, изменение объектов не происходит стоило-бы его таким сделать. Хотя такие сложные объекты не инициализируют все поля по умолчанию и мне кажется что действительно создать константный объект такого класса не получится.
Цитата Сообщение от Fyret Посмотреть сообщение
невиртуальный деструктор у полиморфного класса;
Так еще получилось что хоть эти два заголовочных файла не связанны и из разных проектов, но создается мнение что Picture один и тот-же.
Цитата Сообщение от Croessmah Посмотреть сообщение
_fieldтак не надо лучше
Угу, потому что __Name зарезервированы системой и компиляторами.
Цитата Сообщение от Jupiter Посмотреть сообщение
not good.
делаем так что бработало

#include <hge/hge.h>
т.е. не просто кидаем либу в проект, а прописываем пути в конфигах/опциях проекта
Кликните здесь для просмотра всего текста
Folder PATH listing
Volume serial number is 00000077 EEF4:2125
C:.
├───bin
│ └───data
├───intermediate
├───laboratory
│ ├───img
│ ├───texture
│ └───tools
│ ├───fonted
│ ├───particleed
│ └───textools
├───lib
├───src
│ ├───hge
│ └───wnd
└───text
├───hge code
└───hge tutorial

Boost выдернул как tools через bcp и использую, да внутри проекта.
Yandex
Объявления
21.09.2013, 12:23     Помощь в архитектуре
Ответ Создать тему
Опции темы

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