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

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

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

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

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

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

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

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

Обратитесь к врачу уже.
0
Модератор
Эксперт функциональных языков программирования
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,900
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
14577 / 9479 / 1360
Регистрация: 21.01.2016
Сообщений: 35,762
28.08.2020, 06:55
Цитата Сообщение от vvm28 Посмотреть сообщение
Ваш врач он за большие деньги залечивает или за малые? И что за большие, так и до смерти залечить сможет?
Или ума не хватит?
По мне так - вы некоторый бред несете. Хоть и нахватали репы.
Не я тут рассказываю всем о работодателях-заговорщиках, которые безработицу насаждают искусственно. Не мне от параноидальной шизы и лечиться.
0
Заблокирован
03.09.2020, 15:04
Цитата Сообщение от Shamil1 Посмотреть сообщение
Это нормально, использовать формулы вычисления площади и не знать точно, что такое площадь.
Такое может быть нормальным только в какой-то ненормальной вселенной.
Это НЕ нормально, это аномально.

Добавлено через 18 минут
Цитата Сообщение от KrisMuS Посмотреть сообщение
Скажите пожалуйста понятным языком, что такое объектно-ориентированное программирование ?
Я не знаю "что такое объектно-ориентированное программирование ".
Чисто лингвистический анализ этого переводного термина позволяет предположить, что имеется ввиду програмирооание, для которого характерна ориентация на объекты. Но по существу этот термин может отражать нечто иное.
У меня совсем не много опыта в c#. Первый большой проектик - перелопачивал древнюю нерабочую программу на фортране (не имея алгоритма) в программу на c#. Там было просто перелопачивание с устранением косяков исходного кода. Не было там никакого ООП. Программа заработала. Любой гуру, даже средней руки, с данного форума упал бы в обморок от того кода. Процедурный код в наихудчайшем макаронном стиле гоуту - более 100 перекрестных переходов из всех частей кода во все части кода (так было в изначальном коде).
Сейчас пробую типа по ООП сделать проектик для себя. Осознал пальцами отличия реализации модели предметной области в первом и во втором случае. Модель во втором случае представляет собой систему взаимосвязанных объектов, упорядоченных иерархически и взаимодействующих по определенным правилам, прописанным в соотв интерфейсах.
До этого сделал простые наброски этого проекта в процедурным стиле и теперь боюсь, что в стиле ООП будет медленно работать - сделал все взаимодействия объектов на основе механизма событий. События генерятся объектами во множестве, принимаются, обрабатываются, ретранслируются и т.п. Скоро наступит момент истины)
0
820 / 579 / 75
Регистрация: 20.09.2014
Сообщений: 3,820
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
14577 / 9479 / 1360
Регистрация: 21.01.2016
Сообщений: 35,762
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
14577 / 9479 / 1360
Регистрация: 21.01.2016
Сообщений: 35,762
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
14577 / 9479 / 1360
Регистрация: 21.01.2016
Сообщений: 35,762
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
14577 / 9479 / 1360
Регистрация: 21.01.2016
Сообщений: 35,762
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
14577 / 9479 / 1360
Регистрация: 21.01.2016
Сообщений: 35,762
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
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
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
Ответ Создать тему
Новые блоги и статьи
Знание — сила: Доктрина интенциональности знаний против массовых профанаций
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302 Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
SUNO Ai - Река Без Дна
zorxor 31.07.2026
Автор стихотворения - астрофизик Марина Катыс Ссылка на сгенерированную музыкальную композицию: https:/ / suno. com/ song/ 6f6e5464-b290-4650-be6c-44c85f8d8013 Я говорю, что Время- как вода течет. . .
Из невошедшего на форум (диалог с ИИ-гугла)
zorxor 29.07.2026
А вот, что интересно, сказал мне ИИ-гугла: Этот текст — эмоциональный пост пользователя под ником zorxor на интернет-форуме (вероятно, посвященном мистике, непознанному или альтернативной науке). . . .
Был праздник вчера, а я и не знал.
kumehtar 28.07.2026
27. 07. 2026г. Intel Core 2 Duo исполнилось 20 лет Салют, шампанское, овации! :drink:
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр. Дословно, отклонённая. . .
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
Очистка реквизитов и табличных частей документа при копировании (вариант 2)
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2. Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru