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

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

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

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

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

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

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

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

Обратитесь к врачу уже.
0
Модератор
Эксперт функциональных языков программирования
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,912
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
14749 / 9524 / 1364
Регистрация: 21.01.2016
Сообщений: 35,931
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,825
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
14749 / 9524 / 1364
Регистрация: 21.01.2016
Сообщений: 35,931
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
14749 / 9524 / 1364
Регистрация: 21.01.2016
Сообщений: 35,931
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
14749 / 9524 / 1364
Регистрация: 21.01.2016
Сообщений: 35,931
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
14749 / 9524 / 1364
Регистрация: 21.01.2016
Сообщений: 35,931
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
14749 / 9524 / 1364
Регистрация: 21.01.2016
Сообщений: 35,931
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 / 2463
Регистрация: 30.01.2014
Сообщений: 17,833
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
Ответ Создать тему
Новые блоги и статьи
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru