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

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

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

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

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

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

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

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

Обратитесь к врачу уже.
0
Модератор
Эксперт функциональных языков программирования
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,898
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
14368 / 9469 / 1360
Регистрация: 21.01.2016
Сообщений: 35,732
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,814
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
14368 / 9469 / 1360
Регистрация: 21.01.2016
Сообщений: 35,732
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
14368 / 9469 / 1360
Регистрация: 21.01.2016
Сообщений: 35,732
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
14368 / 9469 / 1360
Регистрация: 21.01.2016
Сообщений: 35,732
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
14368 / 9469 / 1360
Регистрация: 21.01.2016
Сообщений: 35,732
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
14368 / 9469 / 1360
Регистрация: 21.01.2016
Сообщений: 35,732
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
Ответ Создать тему
Новые блоги и статьи
сукцессия 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