OOP 대 절차 프로그래밍 - 페이지 4

 
Реter Konow :
조지 머츠 :

에에... 본질을 잘 이해하지 못했다.

작업은 터미널에서 차량을 분리하는 것이 었습니다. 변경 사항이 없는 코드는 두 플랫폼 모두에서 컴파일되었습니다. 가장 중요한 작업은 트레이드 서버와 작업하기 위한 클래스만 작성하여 작성된 모든 TS를 WealhtLab 개발자에게 전송할 수 있도록 하는 것입니다.

//------------------------------------------------ --


여러 기준에 따라 솔루션을 비교하고 각각의 효과에 대한 결론을 내리기 위해 현재 작업에 대해 질문했습니다. 당신은 실용적인 부분에서 대화를 멀리하고 있습니다. OOP 사용의 효율성을 논하려면 실제로 그것을 증명할 수 있어야 합니다. 저는 제 주장을 증명할 준비가 되었습니다.

그렇다면 현재 과제는 무엇입니까? 나는 당신이 그녀를 기억하기를 바랍니다


함수 포인터를 사용하면 OOP 없이 할 수 있습니다. 포인터가 없다면 OOP가 따라잡을 수 없다는 것을 스스로 이해해야 합니다.

 
Alexey Volchanskiy :

나는 당신이 프로그래머가 아니라고 생각합니까? 그런 다음 2017.07.05 14:55 GMT 00에 어디에 있었는지 기억하십시오. 누구와 무엇에 대해 이야기했는지))

용이하게. 나는 집에서 내 프로그램에 대해 나 자신에게 이야기하고 있었다)))
 
Dmitry Fedoseev :

함수 포인터를 사용하면 OOP 없이 할 수 있습니다. 포인터가 없다면 OOP가 따라잡을 수 없다는 것을 스스로 이해해야 합니다.

아니요. OOP가 따라잡을 수 없다는 것을 보여줄 구체적인 작업은 없지만 어떤 식으로든 배울 수는 없습니다. 안타깝게도. 이것들은 단지 단어일 뿐입니다.


현재 제 프로그래밍 경력은 4년입니다. 나는 매일 많은 시간을 프로그래밍하기 때문에 안전하게 2를 곱할 수 있습니다. 이 모든 시간 동안 나는 수많은 다른 문제를 해결했습니다. 나는 전에 OOP를 사용한 적이 없습니다. 왜 필요한지 알 수 없습니다. 내 실습에서 모든 작업은 덜하지 않고 때로는 더 효율적으로 해결됩니다.

 
Реter Konow :
아니요. OOP가 따라잡을 수 없다는 것을 보여줄 구체적인 작업은 없지만 어떤 식으로든 배울 수는 없습니다. 안타깝게도. 이것들은 단지 단어일 뿐입니다.

외부 매개변수에 따라 알고리즘을 변경하는 가상의 프로그램을 상상해 보십시오. 수많은 옵션이 있을 수 있습니다. OOP 없이 해결할 수 있지만 이러한 다층 스위치가 얼마나 어리석은지 알 수 있습니다. 또한 가능한 옵션의 수가 증가함에 따라 성능이 감소한다는 것이 여기에서 분명합니다. 또한 초기화 중에 OOP가 빌드되고 작업 과정에서 불필요한 분기가 없다는 것도 분명합니다. 옵션을 늘려도 성능이 저하되지는 않습니다.

 

구조화 프로그래밍의 특징은 프로그램을 코드 블록으로 나누는 것입니다.
특정 작업을 수행합니다. 이 경우 구조 단위는 함수입니다.
및 모듈(별도의 파일에 배치할 수 있음).
보다 현대적인 것은 객체 지향 프로그래밍(OOP) 입니다.
OOP의 개념은 데이터 구성에 관한 것입니다. OOP는 프로그래머의 삶을 더 쉽게 만듭니다.
OOP의 핵심 개념은 객체와 클래스입니다.
클래스는 기능이 추가된 구조입니다. 그리고 객체는 구조적 변수 또는 클래스의 인스턴스입니다.

구조적 프로그래밍은 첫 번째 단계입니다. 그것을 마스터하면 프로그래머는 이점을 얻습니다. OOP는 다음과 같은 이점이 있는 다음 단계입니다.

Классы и объекты в C++
  • gamesmaker.ru
Наконец-то мы добрались до самой важной темы во вступительном курсе. Сегодня мы будем говорить о классах и объектах. Выпуск небольшой и не сложный. Что есть хорошо. Класс - не что иное, как структура, к которой добавили функции. А объект - это структурная переменная. Данный материал будет более понятным, если вы хорошо освоились со структурами...
 
Реter Konow :
특정 문제를 풀고 비교해보자.

그런 간단한 작업(자세히 설명하려면 많이 작성해야 함)을 가정해 보겠습니다.

모든 것은 OnTick()에서 발생합니다. 상태를 확인하고 주문을 열어 보겠습니다. 조건은 중요하지 않습니다. 일부 최대값이라고 가정해 보겠습니다. 또는 분.

당연히 로봇은 일종의 차트에 서서 이 기호에 대한 따옴표를 받습니다. OnTick 기능이 하나만 있는 것이 아니라 OnTrade, OnTimer, 자체 기능 등 다른 기능도 있음이 분명합니다.

따라서 이러한 함수 외부에서 공통적으로 사용되는 모든 변수는 코드 시작 부분에 선언해야 합니다. 예를 들어, 기호 이름, 물음표, 입찰가, 스프레드, 인용 문자 수 등 수십 가지가 있을 것입니다.

이 로봇은 하나의 기호, 즉 그가 서 있는 곳. 이러한 차트가 20개 있고 모든 차트에 동일한 로봇을 설치하여 20개 쌍 모두를 동시에 거래한다고 가정해 보겠습니다.

그러나 이것은 일부가 시장에서 지적하는 것처럼 다중 통화 로봇 이 아닙니다.


여기에서 다중 통화로 전환해야 합니다. 저것들. 우리는 그것을 모든 차트(1개의 차트에만)에 넣고 20쌍에 대한 거래를 엽니다. 즉, 단일 모드의 테스터에서 실행하고 Market Watch에 있는 쌍과 거래합니다.

다음은 OOP 없이 수행하는 방법입니다. 모든 공통 변수를 20개 요소의 배열로 바꾸시겠습니까?

그러나 모든 쌍에 대해 동시에 호출되는 함수는 어떻습니까?

여기 OOP 없이는 불가능합니다. :)


추신 : 나는 러시아 교육을받지 않았기 때문에 오랫동안 글을 썼고 몇 페이지를 읽을 시간이 없었습니다.

 
Dmitry Fedoseev :

함수 포인터를 사용하면 OOP 없이 할 수 있습니다. 포인터가 없다면 OOP가 따라잡을 수 없다는 것을 스스로 이해해야 합니다.


동의하지 않는다. 한때 나는 디지털 텔레비전을 위한 프로그램을 작성했는데 컴파일러는 C ++ 였지만 메모리가 충분하지 않았기 때문에 C 내에서 사용했습니다. 함수 포인터는 매우 널리 사용되었지만 이것은 OOP 옆에 있지 않습니다.

 
Petros Shatakhtsyan :

...

다음은 OOP 없이 수행하는 방법입니다.

...

여기서 질문은 "어떻게"가 아니라 "왜"입니까? 터미널에 이미 구현된 것을 코딩하는 이유 - 필요한 수의 차트를 열고 전문가에 따라 걸기만 하면 됩니다. 또한 다른 기호와 시간 프레임에서 매개변수가 달라야 합니다.

 
Alexey Volchanskiy :

동의하지 않는다. 한때 나는 디지털 텔레비전을 위한 프로그램을 작성했는데 컴파일러는 C ++ 였지만 메모리가 충분하지 않았기 때문에 C 내에서 사용했습니다. 함수 포인터는 매우 널리 사용되었지만 이것은 OOP 옆에 있지 않습니다.


편의성 면에서는 옆에 있지 않지만 성능 면에서는 포인터만 있으면 충분합니다.

그리고 편리함은 상대적인 개념입니다.

 
Dmitry Fedoseev :

외부 매개변수에 따라 알고리즘을 변경하는 가상의 프로그램을 상상해 보십시오. 수많은 옵션이 있을 수 있습니다. OOP 없이 해결할 수 있지만 이러한 다층 스위치가 얼마나 어리석은지 알 수 있습니다. 또한 가능한 옵션의 수가 증가함에 따라 성능이 감소한다는 것이 여기에서 분명합니다. 또한 초기화 중에 OOP가 빌드되고 작업 과정에서 추가 분기가 없다는 것도 분명합니다. 옵션을 늘려도 성능이 저하되지는 않습니다.

특정 작업으로 이끄는 것이 바람직합니다. 이 설명은 명확하지 않습니다. 내 실습에서 알고리즘은 외부 매개 변수를 변경해도 변경되지 않습니다. 이 매개 변수의 모든 값에 대해 미리 만들어졌습니다. 그래서 당신이 의미하는 바가 명확하지 않습니다. 구체적인 예를 들어 설명합니다.