Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.84/25: Рейтинг темы: голосов - 25, средняя оценка - 4.84
 Аватар для Laborant666
208 / 101 / 20
Регистрация: 30.06.2020
Сообщений: 848

Полный ооп

18.09.2022, 01:57. Показов 6288. Ответов 60

Студворк — интернет-сервис помощи студентам
Приветствуется ли в плюсах полностью ооп проект? По аналогии с джавой, как сказал один джавист - функций нельзя сделать вообще, можно сделать похожее только через класс с одним методом.
Так вот собственно и вопрос - ооп круто, но стоит ли полностью на ооп делать проект? В данный момент, в рамках одного моего проекта - так сделать можно, но будут классы без данных, чисто методы и всё, по смыслу разбитые на классы
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.09.2022, 01:57
Ответы с готовыми решениями:

ООП. Переделать фрагмент программы под ООП
Есть небольшой фрагмент из программы, который необходимо перестроить под ООП(создать класс), для удобного испольщования. Можно ли изменить...

Где лучше учить ООП PHP ? И зачем нужен ООП
Здравствуйте ! До того как начел учить ООП я кайфовал от программирования, после того как начел учить ООП нет мотивации ну и т.д общем...

Изучаю Python, сейчас учу основы ООП, где можно найти задачи по ООП
Скиньте пожалуйста источники с задачами(желательно на русском)

60
20.09.2022, 13:37
Студворк — интернет-сервис помощи студентам

Не по теме:

Цитата Сообщение от XLAT Посмотреть сообщение
если же всё же не рассуждать о сферических конях,
Напомнило :)
Кликните здесь для просмотра всего текста


0
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
20.09.2022, 13:52
Цитата Сообщение от XLAT Посмотреть сообщение
по ссылкам, жаль, что там нет демок-ексешников,
чтобы решить, а стоит ли оно того,
чтобы смотреть глубже.
Это больше похоже на продукт от фанатов для фанатов.
Если вы фанат -- то стоит, если нет -- ничего особенного вы там не найдете.

Я немного потыкался, меня не впечатлило.
Много специфичной для языка и функциональщины кухни, чуть что серьезное -- добро пожаловать в долину костылей и каньоны велосипдедов.
Перформанс весьма сомнительный.
Хаскель и скала, конечно, давно уже не такие андерперформеры, как в самом начале пути, но им ещё предстоит большой путь.

Добавлено через 2 минуты
Цитата Сообщение от XLAT Посмотреть сообщение
и здесь функциональщина будет проседать, т.е. её чистое применение даст оверхед.
Всё именно так и происходит на практике. Монады и кухни для менеджмента памяти.
1
Just Do It!
 Аватар для XLAT
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
20.09.2022, 13:58
Цитата Сообщение от lemegeton Посмотреть сообщение
Если вы фанат -- то стоит, если нет -- ничего особенного вы там не найдете.
спасибо.

ваще то можно и на С++ писать в функциональном стиле,
только вот по причинам, которые я упомянул выше это оверхедно.

НО,
никто(злые преподы?) и ничто не запрещает смешивать парадигмы, там где это выгодно.
1
 Аватар для Наталья8
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,242
20.09.2022, 21:18
Laborant666,
Моё мнение, молодой человек.
Програмировать учитесь, а то вы всё понтуетесь.
Парадигмы програмирования.
0
 Аватар для Наталья8
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,242
20.09.2022, 21:38
0
 Аватар для Наталья8
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,242
20.09.2022, 21:50
https://www.cyberforum.ru/atta... 1663699818
Вложения
Тип файла: mp4 ссс.mp4 (1.18 Мб, 13 просмотров)
0
 Аватар для Наталья8
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,242
20.09.2022, 21:58
Название: NewPicture9 (2).png
Просмотров: 139

Размер: 1.9 Кб

Хоть развлекаю.
0
 Аватар для Наталья8
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,242
20.09.2022, 22:04
Это на меня комментарий. Не подумайте плохого.

Добавлено через 5 минут
По полторы тыщи строк каждая хрень.
0
 Аватар для Наталья8
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,242
20.09.2022, 22:24
Название: NewPicture10 (2).png
Просмотров: 149

Размер: 19.4 Кб
0
 Аватар для Наталья8
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,242
20.09.2022, 22:40
ООП
если ты спёр код, а он с классом, то будкт ооп.
Пример спёртого кода...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//========================     https://***********/threads/screenshot-v-cv-mat.51042/
 
class Screen{
public:
Screen(){
// Параметры экрана
HWND hwnd = GetDesktopWindow(); 
hWDC = GetWindowDC( hwnd );
width = GetSystemMetrics( SM_CXSCREEN );
height = GetSystemMetrics( SM_CYSCREEN );
 
// Совместимый контекст в памяти
hScreen = CreateCompatibleDC( hWDC ); // - DeleteDC( hScreen );
hBM = CreateCompatibleBitmap( hWDC, width, height ); // - DeleteObject( hBM );
hBM_Temp = SelectObject( hScreen, hBM ); // - SelectObject( hScreen, hBM_Temp );
0
 Аватар для Наталья8
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,242
20.09.2022, 22:59
Пример работы его.
https://www.cyberforum.ru/atta... 1663703924
Извиняюсь телефоном. вторая версия захватчика не запускаеться.
Вложения
Тип файла: mp4 кот.mp4 (1.76 Мб, 15 просмотров)
0
20.09.2022, 23:11
0
 Аватар для Laborant666
208 / 101 / 20
Регистрация: 30.06.2020
Сообщений: 848
20.09.2022, 23:35  [ТС]
Цитата Сообщение от Наталья8 Посмотреть сообщение
а то вы всё понтуетесь
Хм. Понтуюсь?

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

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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
class Bot_screen_bmi
{
private:
    wstring nameWindow;
    HWND windowHWND;
    HDC windowDC, memoryDC;
    RECT windowRECT;
    int windowX, windowY, ScreenshotSize;
    BITMAPINFO bmi;
    HBITMAP imgWindow, imgScreenshot;
    unsigned char *bufWindow;
 
    bool initWindow()
    {
        windowHWND = FindWindow(0, nameWindow.c_str());
        windowDC = GetWindowDC(windowHWND);
        memoryDC = CreateCompatibleDC(windowDC);
        GetWindowRect(windowHWND, &windowRECT);
        windowX = windowRECT.right - windowRECT.left;
        windowY = windowRECT.bottom - windowRECT.top;
        windowX += 4 - (windowX % 4);
 
        return 0;
    }
    int initBmi()
    {
        bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER); 
        bmi.bmiHeader.biWidth = windowX; 
        bmi.bmiHeader.biHeight = -windowY;
        bmi.bmiHeader.biSizeImage = windowX * windowY * 3;
        bmi.bmiHeader.biCompression = BI_RGB;
        bmi.bmiHeader.biBitCount = 24;
        bmi.bmiHeader.biPlanes = 1;
        ScreenshotSize = bmi.bmiHeader.biSizeImage;
 
        imgWindow = CreateDIBSection(windowDC,
            &bmi,
            DIB_RGB_COLORS,
            (void**)&bufWindow, 0, 0);
        return 0;
    }
 
public:
    Bot_screen_bmi(wstring nameWindow)
    {
        this->nameWindow = nameWindow;
        initWindow();
        initBmi();
        Screenshot();
    }
    ~Bot_screen_bmi()
    {
        ReleaseDC(NULL, windowDC);
        DeleteDC(memoryDC);
        DeleteObject(imgWindow);
        DeleteObject(imgScreenshot);
    }
 
    void Screenshot()
    {
        SelectObject(memoryDC, imgWindow); 
        BitBlt(memoryDC, 0, 0, windowX, windowY, windowDC, 0, 0, SRCCOPY); 
    }
    HWND GetHWND()
    {
        return windowHWND;
    }
    int GetX()
    {
        return windowX;
    }
    int GetY()
    {
        return windowY;
    }
 
    color GetPixel(int x, int y)
    {
        if (y<0 || y > windowY || x <0 || x > windowX)
        { 
        }
        else
        {
                return {int(bufWindow[(y * windowX + x) * 3 + 2]),
                        int(bufWindow[(y * windowX + x) * 3 + 1]),
                        int(bufWindow[(y * windowX + x) * 3]) };
        }   
        return { -1,-1,-1 };
    }
 
};


Ну держите разносите в пух и прах, критикуйте, осуждайте)

Добавлено через 1 минуту
1 неиспользуемое поле и нет проверки на инициализации. Вот что я вижу. А что вы добавите?

Добавлено через 6 минут
Цитата Сообщение от Наталья8 Посмотреть сообщение
По полторы тыщи строк каждая хрень.
Ну допустим у меня текущий проект уже перевалил за эту цифру, не разваливается, спокойно расширяется...
Понты понты. Эх. Наверное потому вы скинули свои семь проектов? Я и без вас знаю, что у меня опыта мало) И на вопрос темы вы уже перестали отвечать, могу попросить не спамить в тему то, что к ней не относится? В личку лучше
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
20.09.2022, 23:58
Laborant666, на будущее, методы которые не изменяют внутренние данные, делайте константными.
Потом будет меньше хлопот.

Добавлено через 2 минуты
Нет конструктора копирования. Нарушено Правило Трех/Пяти.
Если объект не должен копироваться. Явно это запретите.

Добавлено через 1 минуту
Цитата Сообщение от Laborant666 Посмотреть сообщение
Ну держите разносите в пух и прах, критикуйте, осуждайте)
Ну вообще, это для другой темы )
0
 Аватар для Наталья8
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,242
21.09.2022, 01:43
Вот рабочий скриншот по минималке , вот и сравни.

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
54
55
56
57
58
59
60
61
62
63
64
#include <windows.h>
#include <stdio.h>
//-----------------------------
int     w, h;
void *  p;
 
void dump_bmp()
{
int                 i;
BITMAPFILEHEADER    bfh;
BITMAPINFOHEADER    bmi;
FILE *              fp;
 
memset( &bfh, 0, sizeof( BITMAPFILEHEADER ) );
memset( &bmi, 0, sizeof( BITMAPINFOHEADER ) );
 
bfh.bfType      = 0x4d42; // "BM"
bfh.bfSize      = sizeof( BITMAPFILEHEADER ) + w * h * 4;
bfh.bfOffBits   = sizeof( BITMAPFILEHEADER ) + sizeof( BITMAPINFOHEADER );
 
bmi.biSize          = sizeof( BITMAPINFOHEADER );
bmi.biWidth         = w;
bmi.biHeight        = h;
bmi.biPlanes        = 1;
bmi.biBitCount      = 32;
bmi.biCompression   = BI_RGB;
 
fp = fopen( "ss.bmp", "wb+" );
 
fwrite( &bfh, sizeof( BITMAPFILEHEADER ), 1, fp );
fwrite( &bmi, sizeof( BITMAPINFOHEADER ), 1, fp );
fwrite( p, w * h * 4, 1, fp );
 
fclose( fp );
}
 
 
//====================================================
//====================================================
int main()
{
HDC                 hdc;
HBITMAP             dib;
BITMAPINFOHEADER    bi;
 
w = GetSystemMetrics( SM_CXSCREEN );
h = GetSystemMetrics( SM_CYSCREEN );
 
bi.biSize           = sizeof( BITMAPINFOHEADER );
bi.biWidth          = w;
bi.biHeight         = h;
bi.biPlanes         = 1;
bi.biBitCount       = 32;
bi.biCompression    = BI_RGB;
hdc = CreateCompatibleDC( NULL );
dib = CreateDIBSection( hdc, (BITMAPINFO *)&bi, DIB_RGB_COLORS, (void **)&p, NULL, 0 );
SelectObject( hdc, dib );
 
BitBlt( hdc, 0, 0, w, h, GetDC( NULL ), 0, 0, SRCCOPY );
 
dump_bmp();
 
return 0;
}
Добавлено через 38 минут

Laborant666,
Вот это что за мусор?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
color GetPixel(int x, int y)
    {
        if (y<0 || y > windowY || x <0 || x > windowX)
        {
        }
        else
        {
            return{ int(bufWindow[(y * windowX + x) * 3 + 2]),
                int(bufWindow[(y * windowX + x) * 3 + 1]),
                int(bufWindow[(y * windowX + x) * 3]) };
        }
        return{ -1, -1, -1 };
    }
Добавлено через 22 минуты
Наверное ты ей достаёшь пикселя.

Добавлено через 10 минут
void Screenshot()
{
SelectObject(memoryDC, imgWindow);
BitBlt(memoryDC, 0, 0, windowX, windowY, windowDC, 0, 0, SRCCOPY);
}
Сюда я подаю координаты, и считываю область экрана

Добавлено через 24 минуты
Laborant666,
Я конечно уважаю твои познания,
но такие вещи, лучше найти в сети...
0
 Аватар для Laborant666
208 / 101 / 20
Регистрация: 30.06.2020
Сообщений: 848
21.09.2022, 11:05  [ТС]
Цитата Сообщение от SmallEvil Посмотреть сообщение
на будущее, методы которые не изменяют внутренние данные, делайте константными.
Хм, учту, спасибо

Добавлено через 1 минуту
Цитата Сообщение от Наталья8 Посмотреть сообщение
Сюда я подаю координаты, и считываю область экрана
Область да, но мне нужна не область, а весь скрин. Здесь ошибка есть?

Добавлено через 48 секунд
Цитата Сообщение от Наталья8 Посмотреть сообщение
Вот это что за мусор?
Получение пикселя. Что-то не так? Вылезли за границы скрина - получили -1 по трем каналам. Не вылезли - получили пиксель

Добавлено через 38 секунд
Цитата Сообщение от SmallEvil Посмотреть сообщение
Нет конструктора копирования.
Прошу подробнее. Копирования чего именно?

Добавлено через 24 секунды
Цитата Сообщение от SmallEvil Посмотреть сообщение
Нарушено Правило Трех/Пяти
О правиле не в курсе, расскажите о нём
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
21.09.2022, 13:05
Цитата Сообщение от SmallEvil Посмотреть сообщение
Нарушено Правило Трех/Пяти.
Цитата Сообщение от Laborant666 Посмотреть сообщение
О правиле не в курсе, расскажите о нём
D C++ без учета этого никак.
Распространенные ошибки - Нарушение правила ТРЕХ.
Вики -Правило трёх (C++)
1
 Аватар для Наталья8
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,242
21.09.2022, 14:20
Цитата Сообщение от Laborant666 Посмотреть сообщение
мне нужна не область, а весь скрин
Что значит весь скрин...
windowHWND = FindWindow(0, nameWindow.c_str());
Ты ищешь окно по его имяни? Скриншот какого то окна.
//------
А вообще, открою тайну...
Кто тебе сказал, что это плюсы?
Это чистое winApi.
И за каким смыслом его в класс лепить?
//------
Твой код, я бы воровать не стал. Как то мусорно всё...

Добавлено через 47 минут

Не по теме:

Сергей Сергеевич
Правильный класс подогнал.
Я почитал.
И на том спасибо.

0
 Аватар для Laborant666
208 / 101 / 20
Регистрация: 30.06.2020
Сообщений: 848
21.09.2022, 14:28  [ТС]
Цитата Сообщение от SmallEvil Посмотреть сообщение
D C++ без учета этого никак.
Распространенные ошибки - Нарушение правила ТРЕХ.
Вики -Правило трёх (C++)
Взято из вики

"Так как неявно определённые конструкторы и операторы присваивания просто копируют все члены-данные класса[3], определение явных конструкторов копирования и операторов присваивания копированием необходимо в случаях, когда класс инкапсулирует сложные структуры данных или может поддерживать эксклюзивный доступ к ресурсам. А также в случаях, когда класс содержит константные данные или ссылки."

Инкапсуляции и эксклюзивного доступа в классе у меня нет, но учту это правило

Добавлено через 57 секунд
Цитата Сообщение от Наталья8 Посмотреть сообщение
windowHWND = FindWindow(0, nameWindow.c_str());
Ты ищешь окно по его имяни? Скриншот какого то окна.
Исходя из названия класса, пусть и кривого - видно что он под Memu и только. А там достаточно найти окно по имени, что бы доставать скриншоты

Добавлено через 21 секунду
Цитата Сообщение от Наталья8 Посмотреть сообщение
Это чистое winApi.
Конкретно данный класс да

Добавлено через 19 секунд
В общем закрою тему, она уже себя изжила и пошла не по названию
0
 Аватар для Наталья8
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,242
21.09.2022, 14:33
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.09.2022, 14:33

ООП ради ООП
Доброго времени суток! Есть к примеру класс Cat который реализует интерфейс Movable, инкапсулирует цвет, и прочее. Имеет ли смысл...

Полный слив...
///

Я полный новичок
20 марта сделал свой первый сайт по партнёрской программе интернет-магазина.Конечно я уже знал что его надо как то раскручивать,но я такой...

полный перебор
и снова я..)у меня есть кусок задачи..там нада просто правильна написать нужную распечатку...ая нереально туплю, ибо бошка набекрень..ну а...

Полный перебор
Здравствуйте. Скорее всего, я пришел не по адресу и мне следовало бы задать свой вопрос где-нибудь в разделе алгоритмов, но не суть. Я всё...


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
сукцессия 30. Фосфорный и азотный замки по "честному" закону лимитирования Либиха
anaschu 16.07.2026
Основные достижения за последние дни 1. Механизм отложенного высвобождения фосфора Добавлен специальный пул для медленного разложения меланизированных гиф ЕСМ Реализована разная скорость. . .
Запрет пометки на удаление и отмены проведения
Maks 16.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "ПутевойЛист" разработанного в КА2. Задача: запретить помечать на удаление и отменять проведения путевого листа при условии, если он сдан. . .
Как надо было делать правильно - вообще не слушать ИИ, его дело - текст.
Hrethgir 15.07.2026
А вообще надо было делать не так, чтобы не исправлять ошибку https:/ / www. cyberforum. ru/ blogs/ 223907/ 10996. html , правильно было : удалил кнопку, а потом добавил её. Всё это стресс конечно. Почему?. . .
Знаете, от чего появляется стресс?
kumehtar 15.07.2026
Стресс появляется оттого, что вы, зная как поступить правильно, делаете наоборот. Ларри Уингет
Нас бьют, а мы крепчаем? Какая чушь!
kumehtar 15.07.2026
Вот это вот бытующее мнение, что человек меняется только под действием проблем, всегда считал вредоносным. Поверь, от проблем у людей появляются не изменения, а нервное расстройство и ПТСР. А. . .
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru