Форум программистов, компьютерный форум, киберфорум
ООП и паттерны
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.92/84: Рейтинг темы: голосов - 84, средняя оценка - 4.92
0 / 0 / 0
Регистрация: 02.10.2019
Сообщений: 20

Объясните понятие ООП

13.02.2020, 23:25. Показов 22973. Ответов 242

Студворк — интернет-сервис помощи студентам
Скажите пожалуйста понятным языком, что такое объектно-ориентированное программирование ?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.02.2020, 23:25
Ответы с готовыми решениями:

Понятие ООП
Доброго времени суток! Пытаюсь вникнуть в ООП после длительного написания кода в процедурном стиле, и это не так просто =( Хочу...

Объясните понятие изоморфизма двух алгебр (на примере)
Кто нибудь, объясните мне понятие изоморфизма двух алгебр на примере. Или дайте источник информации (я искал -- толкового ничего не нашёл)....

Дать понятие понятие НОК в кольце целых чисел
Дать понятие понятие НОК в кольце целых чисел.

242
Эксперт .NET
 Аватар для Usaga
14817 / 9593 / 1369
Регистрация: 21.01.2016
Сообщений: 36,136
21.08.2020, 09:24
Студворк — интернет-сервис помощи студентам
vvm28, я вам уже говорил, что все эти домыслы бредовы и основываются на каких-то больных фантазиях. Что я, что не малая часть местных старожилов не испытывали проблем с трудоустройством или сменой места работы. Ни кто ни кого не уничтожал. Это параноидальные бредни. То, что вас никуда не взяли есть результат каких-то ваших же недостатков.

Обратитесь к врачу уже.
0
Модератор
Эксперт функциональных языков программирования
3142 / 2290 / 469
Регистрация: 26.03.2015
Сообщений: 8,920
21.08.2020, 10:29
В Москве поиск работы - от отправки первого резюме до посещения последнего собеседования - занимает 2-3 недели. Это если запросы соответствуют квалификации. Крупных ИТ контор не так много, зато они предлагают сотни рабочих мест каждая. Кроме того, есть много огромных не ИТ контор (банки и т.д.) со своим штатом программистов.
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
21.08.2020, 17:10
Цитата Сообщение от vvm28 Посмотреть сообщение
у нас не будут покупать на внутреннем рынке - нет экосистемы, нет движения. А до внешнего рынка никто не добирается.
Чушь, даже на этом форуме есть вполне конкретный пример обратного. А ещё есть JetBrains, ALM Works и множество других.
0
 Аватар для vvm28
773 / 541 / 67
Регистрация: 22.12.2013
Сообщений: 2,500
Записей в блоге: 26
27.08.2020, 21:33
korvin_, Погодите это что вы мне за ссыль дали?
То есть AnyLogic? Что я вам могу сказать. Например я о чем размышляю - о некоторой монетизации своих наработок и знаний. Ну да все вы Графы Монтекристо. Ну и я один ничего не понимаю.
Цитата Сообщение от Usaga Посмотреть сообщение
Обратитесь к врачу уже.
Ваш врач он за большие деньги залечивает или за малые? И что за большие, так и до смерти залечить сможет?
Или ума не хватит?
По мне так - вы некоторый бред несете. Хоть и нахватали репы.

Цитата Сообщение от Shamil1 Посмотреть сообщение
В Москве поиск работы - от отправки первого резюме до посещения последнего собеседования - занимает 2-3 недели.
Москва - это где? Это какой-то пригород России?
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
27.08.2020, 23:17
Цитата Сообщение от vvm28 Посмотреть сообщение
Погодите это что вы мне за ссыль дали?
То есть AnyLogic?
Российская компания, продукты которой покупают на внутреннем рынке и которая успешно продаёт свои продукты на внешнем по всему миру и занимает лидирующую позицию в свое сфере.

Цитата Сообщение от vvm28 Посмотреть сообщение
Что я вам могу сказать.
Что ты можешь сказать?

Цитата Сообщение от vvm28 Посмотреть сообщение
Ну и я один ничего не понимаю.
Видимо так и есть.

Цитата Сообщение от vvm28 Посмотреть сообщение
Москва - это где? Это какой-то пригород России?
К врачу сходи всё же.
0
Эксперт .NET
 Аватар для Usaga
14817 / 9593 / 1369
Регистрация: 21.01.2016
Сообщений: 36,136
28.08.2020, 06:55
Цитата Сообщение от vvm28 Посмотреть сообщение
Ваш врач он за большие деньги залечивает или за малые? И что за большие, так и до смерти залечить сможет?
Или ума не хватит?
По мне так - вы некоторый бред несете. Хоть и нахватали репы.
Не я тут рассказываю всем о работодателях-заговорщиках, которые безработицу насаждают искусственно. Не мне от параноидальной шизы и лечиться.
0
Заблокирован
03.09.2020, 15:04
Цитата Сообщение от Shamil1 Посмотреть сообщение
Это нормально, использовать формулы вычисления площади и не знать точно, что такое площадь.
Такое может быть нормальным только в какой-то ненормальной вселенной.
Это НЕ нормально, это аномально.

Добавлено через 18 минут
Цитата Сообщение от KrisMuS Посмотреть сообщение
Скажите пожалуйста понятным языком, что такое объектно-ориентированное программирование ?
Я не знаю "что такое объектно-ориентированное программирование ".
Чисто лингвистический анализ этого переводного термина позволяет предположить, что имеется ввиду програмирооание, для которого характерна ориентация на объекты. Но по существу этот термин может отражать нечто иное.
У меня совсем не много опыта в c#. Первый большой проектик - перелопачивал древнюю нерабочую программу на фортране (не имея алгоритма) в программу на c#. Там было просто перелопачивание с устранением косяков исходного кода. Не было там никакого ООП. Программа заработала. Любой гуру, даже средней руки, с данного форума упал бы в обморок от того кода. Процедурный код в наихудчайшем макаронном стиле гоуту - более 100 перекрестных переходов из всех частей кода во все части кода (так было в изначальном коде).
Сейчас пробую типа по ООП сделать проектик для себя. Осознал пальцами отличия реализации модели предметной области в первом и во втором случае. Модель во втором случае представляет собой систему взаимосвязанных объектов, упорядоченных иерархически и взаимодействующих по определенным правилам, прописанным в соотв интерфейсах.
До этого сделал простые наброски этого проекта в процедурным стиле и теперь боюсь, что в стиле ООП будет медленно работать - сделал все взаимодействия объектов на основе механизма событий. События генерятся объектами во множестве, принимаются, обрабатываются, ретранслируются и т.п. Скоро наступит момент истины)
0
821 / 580 / 75
Регистрация: 20.09.2014
Сообщений: 3,828
04.09.2020, 06:39
titan4ik, если вы настроите оптимизацию компилятора, то тормозить сильно не должно.
1
 Аватар для vantfiles
1018 / 1921 / 177
Регистрация: 07.05.2013
Сообщений: 3,931
Записей в блоге: 12
04.09.2020, 07:18
Разница между скоростью выполнения обычной функции и метода объекта может отличаться в два-три раза. Причина в разнице адресаций, в методах она всегда косвенная.

Если расчетная задача в одном случае будет выполняться 0.1 сек, а в другом 0.3 сек, то как бы и ладно...
Другое дело если вместо суток задача будет крутиться трое...
0
Эксперт .NET
 Аватар для Usaga
14817 / 9593 / 1369
Регистрация: 21.01.2016
Сообщений: 36,136
04.09.2020, 07:45
Цитата Сообщение от vantfiles Посмотреть сообщение
Разница между скоростью выполнения обычной функции и метода объекта может отличаться в два-три раза.
Ну это вы загнули)
0
 Аватар для vantfiles
1018 / 1921 / 177
Регистрация: 07.05.2013
Сообщений: 3,931
Записей в блоге: 12
04.09.2020, 08:38
Цитата Сообщение от Usaga Посмотреть сообщение
Ну это вы загнули)
Что, приуменьшил?
0
Эксперт .NET
 Аватар для Usaga
14817 / 9593 / 1369
Регистрация: 21.01.2016
Сообщений: 36,136
04.09.2020, 08:46
vantfiles, преувеличили чутка)
0
 Аватар для vantfiles
1018 / 1921 / 177
Регистрация: 07.05.2013
Сообщений: 3,931
Записей в блоге: 12
04.09.2020, 12:49
Вот статья:

Is C++ slower than C? If yes, is the difference significant?
https://www.quora.com/Is-C%2B%... dy-Francis

А вот тут исходники тестов с о-о-очень убедительной табличкой.
Сравниваются С С++ Java:

https://gist.github.com/simonh... ummary-txt
0
Эксперт .NET
 Аватар для Usaga
14817 / 9593 / 1369
Регистрация: 21.01.2016
Сообщений: 36,136
04.09.2020, 13:31
vantfiles, вы меня, конечно, извините. Но это некорректные сравнения. Выигравшая по скорости программа на Си аллоцирует все данные ДО цикла в котором идёт замер производительности. А остальные программы на каждой итерации аллоцирует эти Chan'ы. Конечно такое будет дольше исполняться, тупо потому работы в разы больше)

Добавлено через 9 минут
Ну и Java в этот тест подтягивать тоже было лишним. JVM вставляется всякие проверки выходов за границы массивов и ссылки все на null проверяет. Тут без косвенного обращения оверхеда хватает. Поэтому результаты замеров неадекватные.

Добавлено через 9 минут
Ну и сам косвенный переход - всего несколько дополнительных инструкций и обращений к памяти. Выделение и высвобождение фрейма на стеке в пустой функции и то больше действий занимает:

Assembler
1
2
3
4
5
push ebp
mov ebp, esp
 
pop ebp
ret
А уж сам код в методе и подавно. Поэтому такой оверхед на косвенный переход на фоне любого непустого метода просто ничтожен.
0
 Аватар для vantfiles
1018 / 1921 / 177
Регистрация: 07.05.2013
Сообщений: 3,931
Записей в блоге: 12
04.09.2020, 13:33
...ну хорошо, загнул... Щас вот свои тесты погонял - разницу больше чем в 30-40 процентов между одинаковыми (исходники совпадают) ф-цией и методом выжать не получается...
0
Эксперт .NET
 Аватар для Usaga
14817 / 9593 / 1369
Регистрация: 21.01.2016
Сообщений: 36,136
04.09.2020, 13:39
vantfiles, и то 30% - 40% - это крайне много. Всё равно разница какая-то есть в коде, кроме замены функции на метод.

Добавлено через 3 минуты
Возможно, что в случае с функцией компилятор функцию вообще заинлайнил.
0
 Аватар для vantfiles
1018 / 1921 / 177
Регистрация: 07.05.2013
Сообщений: 3,931
Записей в блоге: 12
04.09.2020, 13:53
Цитата Сообщение от Usaga Посмотреть сообщение
Возможно, что в случае с функцией компилятор функцию вообще заинлайнил.
Не, я отключил инлайны.

Вот, может заметите крамолу:

Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <vector>
#include <conio.h>
#include <time.h>
#include <windows.h>
 
typedef long ll;
 
const ll SZ = 10000;
 
ll arr[ SZ ];
 
ll f1( ll i )
{
    return i * i;
}
 
void f3()
{
    for( ll i = 0; i < SZ; i++ ){
         arr[ i ] = f1( i );
    }
}
 
class dummy
{
public:
 
ll arr[ SZ ];
 
ll f1( ll i )
{
    return i * i;
}
 
void f3()
{
    for( ll i = 0; i < SZ; i++ ){
         arr[ i ] = f1( i );
    }
}
 
};
 
LARGE_INTEGER t1, t2;
 
int main() 
{
  dummy dum = dummy();
 
// Тест 1 ------------------------------------------------------
 
   QueryPerformanceCounter( &t1);
     for( ll i = 0; i < 1000; i++ ){
          f3();
     }
   QueryPerformanceCounter( &t2);
 
   std::cout << "T1: " << t2.LowPart - t1.LowPart << "\n";
   std::cout << "T1: " << t1.HighPart << " " << t1.LowPart << " " << t2.HighPart << " " << t2.LowPart << "\n";
 
// Тест 2 ------------------------------------------------------
 
   QueryPerformanceCounter( &t1);
     for( ll i = 0; i < 1000; i++ ){
          dum.f3();
     }
   QueryPerformanceCounter( &t2);
 
   std::cout << "T2: " << t2.LowPart - t1.LowPart << "\n";
   std::cout << "T1: " << t1.HighPart << " " << t1.LowPart << " " << t2.HighPart << " " << t2.LowPart << "\n";
 
    // _getch();
    system( "pause" );
    
    return 0;
}
0
Эксперт .NET
 Аватар для Usaga
14817 / 9593 / 1369
Регистрация: 21.01.2016
Сообщений: 36,136
04.09.2020, 13:59
Да вроде бы ничего лишнего и нет. Говорите, что разница в 30%-40%? Мне кажется, что это результаты оптимизаций какие-то.
0
 Аватар для vantfiles
1018 / 1921 / 177
Регистрация: 07.05.2013
Сообщений: 3,931
Записей в блоге: 12
04.09.2020, 14:07
Нет, это при отключенной оптимизации... На O2 он вообще ооп-шную часть убирает из кода...
0
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
05.09.2020, 01:42
vantfiles, так-то у вас код делает разное. В случае с классами считаются данные для локального массива, доступ к которому осуществляется через this. В случае со свободной функцией - массив глобальный. Это разный код, с разным поведением. Нет смысла его сравнивать.
Если бы "нам" понадобилось в Си сделать расчет для локального массива, то "мы" написали бы так:
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <conio.h>
#include <time.h>
#include <windows.h>
 
typedef long ll;
 
const ll SZ = 10000;
 
struct local
{
    ll arr[SZ];
};
 
ll f1(ll i)
{
    return i * i;
}
 
void f3(local * data)
{
    for (ll i = 0; i < SZ; i++) {
        data->arr[i] = f1(i);
    }
}
 
class dummy
{
public:
    ll arr[SZ];
 
    void f3()
    {
        for (ll i = 0; i < SZ; i++) {
            arr[i] = f1(i);
        }
    }
};
 
LARGE_INTEGER t1, t2;
 
int main()
{
    dummy dum = dummy();
    local loc = {};
    // Тест 1 ------------------------------------------------------
 
    QueryPerformanceCounter(&t1);
    for (ll i = 0; i < 1000; i++) {
        f3(&loc);
    }
    QueryPerformanceCounter(&t2);
 
    std::cout << "T1: " << t2.LowPart - t1.LowPart << "\n";
    std::cout << "T1: " << t1.HighPart << " " << t1.LowPart << " " << t2.HighPart << " " << t2.LowPart << "\n";
 
    // Тест 2 ------------------------------------------------------
 
    QueryPerformanceCounter(&t1);
    for (ll i = 0; i < 1000; i++) {
        dum.f3();
    }
    QueryPerformanceCounter(&t2);
 
    std::cout << "T2: " << t2.LowPart - t1.LowPart << "\n";
    std::cout << "T1: " << t1.HighPart << " " << t1.LowPart << " " << t2.HighPart << " " << t2.LowPart << "\n";
 
}


Или так:
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <conio.h>
#include <time.h>
#include <windows.h>
 
typedef long ll;
 
const ll SZ = 10000;
 
ll f1(ll i)
{
    return i * i;
}
 
void f3(ll * arr)
{
    for (ll i = 0; i < SZ; i++) {
        arr[i] = f1(i);
    }
}
 
class dummy
{
public:
    ll arr[SZ];
 
    void f3()
    {
        for (ll i = 0; i < SZ; i++) {
            arr[i] = f1(i);
        }
    }
};
 
LARGE_INTEGER t1, t2;
 
int main()
{
    dummy dum = dummy();
    ll arr[SZ];
    // Тест 1 ------------------------------------------------------
 
    QueryPerformanceCounter(&t1);
    for (ll i = 0; i < 1000; i++) {
        f3(arr);
    }
    QueryPerformanceCounter(&t2);
 
    std::cout << "T1: " << t2.LowPart - t1.LowPart << "\n";
    std::cout << "T1: " << t1.HighPart << " " << t1.LowPart << " " << t2.HighPart << " " << t2.LowPart << "\n";
 
    // Тест 2 ------------------------------------------------------
 
    QueryPerformanceCounter(&t1);
    for (ll i = 0; i < 1000; i++) {
        dum.f3();
    }
    QueryPerformanceCounter(&t2);
 
    std::cout << "T2: " << t2.LowPart - t1.LowPart << "\n";
    std::cout << "T1: " << t1.HighPart << " " << t1.LowPart << " " << t2.HighPart << " " << t2.LowPart << "\n";
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.09.2020, 01:42

Объясните кое что по ООП
Не дает мне покоя очень важный момент, пример: System.IO.File.Open() System.IO - пространство имен File - класс Open() -...

ООП в паскале. Объясните что к чему
Проблема в следующем, хотелось бы понять как подключать дополнительные файлы исходных текстов к основному. не через uses же это делается...

Объясните некоторые принципы ООП в конкретной реализации
Доброго дня! У меня есть пользователи, которые делятся на зарегистрированных (User) и незарегистрированных (Person) и создаются...

Наследование ООП, объясните примитивную ситуацию, пож
Добрый. Всё никак не могу взять в толк: как это должно работать (точнее - почему не работает так, как я ожидаю). Примитивная наколенка: ...

Начинаю изучать ООП. Объясните, что такое интерфейс?
Всем привет. Начинаю изучать ООП. Объясните,что такое интерфейс?для чего он нужен и чем он отличается от класса?


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

Или воспользуйтесь поиском по форуму:
100
Ответ Создать тему
Новые блоги и статьи
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки. Добавлены следующие реквизиты типа Булево: - Буквы; - Цифры; - Символы. Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей. Самым главным критерием для. . .
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store. И так: 1. Скачиваем с. . .
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге). Задача: Программно добавить префикс в нумерацию документов. Решение: В модуле объекта. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru