객체 지향 프로그래밍 : 복잡한 개념을 단순하게 만들기

폭로: 귀하의 지원은 사이트 운영을 유지하는 데 도움이됩니다! 이 페이지에서 권장하는 일부 서비스에 대한 추천 수수료가 발생합니다.


객체 지향 (OO) 프로그래밍은 객체의 개념, 속성 및 기능을 가지며 다른 객체와 상호 작용하는 캡슐화 된 데이터 구조를 포함하거나 의존하는 프로그래밍 패러다임입니다..

프로그램의 개체는 종종 실제 개체를 나타냅니다. 예를 들어 전자 상거래 웹 사이트 응용 프로그램에는 Customer 개체, Shopping_cart 개체 및 Product 개체가있을 수 있습니다. 다른 객체는 Payment_processor 또는 Login_form과 같은 실제 등가와 느슨하게 관련 될 수 있습니다. 다른 많은 개체는 응용 프로그램 논리를 제공하며 직접적인 실제 병렬 (인증, 템플릿, 요청 처리 또는 작동중인 응용 프로그램에 필요한 기타 수많은 기능을 관리하는 개체)이 없습니다..

객체 지향 프로그래밍

객체 지향 프로그래밍의 역사

객체 지향 프로그래밍이 실제 시스템을 모델링하는 데 특히 적합한 것 같으면 우연이 아닙니다. 이제 개념을 설명하기위한 대부분의 언어를 포함하여 객체 지향 프로그래밍과 관련된 개념은 실제 시스템 시뮬레이션에 사용 된 Simula 프로그래밍 언어에서 시작되었습니다. 1967 년 클래스, 서브 클래스 및 객체가 Simula에 추가되었습니다..

1970 년대 Alan Kay는 스몰 토크에서 작업하면서 “객체 지향”이라는 용어를 만들었습니다. 이것은 언어로 된 객체의 광범위한 사용과 조직의 기본 단위로서의 위치와 관련이 있습니다..

객체 지향 프로그래밍의 확산은 처음에는 비교적 느 렸습니다. Common Lisp는 1970 년대 후반에 Lisp에 객체를 추가하여 Common Lisp Object System을 도입했습니다. 1980 년대에 에펠 프로그래밍 언어가 발명되었으며, 이는 완전히 객체 지향적입니다. 에펠의 발명가 인 Bertrand Meyer는 OO 프로그래밍의 개념을 널리 보급 한 최초의 책 중 하나 인 Object-Oriented Software Construction을 썼습니다..

1990 년대와 2000 년대에 객체 지향 프로그래밍이 실제로 시작되었습니다. 이는 일반적으로 그 기간 동안 기술 산업에서 엄청난 폭발과 프로그래머가 갑자기 큰 기술 회사에 유입되면서 발생했습니다. 옹호자들에 의해 촉진 된 객체 지향 프로그래밍의 판매 포인트 중 하나는 우려 분리와 느슨한 결합 (아래 참조)을 통해 팀이 대규모 시스템에서보다 효과적으로 작업 할 수 있다는 것입니다..

21 세기의 첫 10 년이 끝날 무렵, 객체 지향 프로그래밍은 대부분의 소프트웨어를 개발하는“한 가지 올바른 방법”이되었습니다. 최신 프로그래밍 언어, 특히 Python, Ruby 및 JavaScript와 같이 동적으로 유형이 지정된 해석 언어는 객체 지향 접근 방식을 가정하거나 시행하는 경향이 있습니다. 한편, 포트란 (Fortran)과 코볼 (COBOL)과 같은 많은 오래된 언어는 객체 지향 기능을 추가했습니다.

중요한 객체 지향 개념

객체 지향 프로그래밍은 개념, 즉 컴퓨터 프로그램 설계 문제에 접근하는 방법입니다. 강력하고 빠른 규칙이나 특정 방법론이 아닙니다. 다른 프로그래밍 언어는 OOP에 다르게 접근합니다. 일부는 다소 엄격하며 일부는 다릅니다. 다음은 객체 지향 디자인 개념의 일반적인 개요입니다. 이 개념이 여러 언어로 구현되는 방법을 설명하는 리소스 및 세부 정보는 자매 기사, 객체 지향 프로그래밍을 참조하십시오..

우려의 분리

객체 지향 프로그래밍의 다른 모든 개념을 알려주는 중심 가이 딩 원칙은 우려의 분리입니다. 이것은 논리적으로 별개의 데이터 및 기능 번들을 별개의 애플리케이션 코드 번들로 분리해야한다는 생각입니다..

이 아이디어는 객체 지향 프로그래밍에 고유하지 않습니다. 대부분의 프로그래밍 언어는 관심사 분리를 허용하며 대부분의 프로그래밍 패러다임이이를 촉진합니다. 그러나 관심사 분리는 객체 지향 프로그래밍에 특히 중요합니다. 우려의 강력한 분리는 거의 모든 다른 OO 개념의 원동력입니다..

객체와 클래스

처음에는 객체 지향 프로그래밍의 기본 개념이 객체 인 것으로 보입니다. 어떤면에서는 그렇습니다. 그러나 개발자의 관점에서 근본적인 관심사는 수업입니다..

클래스는 객체를 정의합니다. 객체는 클래스를 인스턴스화합니다. 예를 들어, 전자 상거래 웹 사이트에 대해 계속 생각해 봅시다. 많은 고객이 있지만 모두 같은 일을합니다. 프로그래머가 고객이 무엇인지, 어떻게 작동하는지 정의한 Customer 클래스가 있습니다. 그런 다음 각 개별 고객은 시스템에서 고객 오브젝트로 표시됩니다..

클래스 정의는 모든 구현 세부 사항을 지정하기 때문에 객체 지향 프로그램을 개발하는 대부분의 작업에는 객체가 아닌 클래스 작업이 필요합니다..

클래식 및 비 클래식 OO 언어

많은 객체 지향 개념을 포함하지만 클래스라는 구조가없는 소수의 언어가 있습니다. 가장 주목할만한 것은 프로토 타입을 사용하는 JavaScript 또는 복제 된 일반 객체입니다. 용어, 기본 철학, 심지어“언더 후드”구현까지는 다르지만 개발자 경험은 거의 동일합니다..

대부분의 OO 언어를 나타내는 클래스가있는 언어를 “클래식”이라고도합니다. 이것은“클래스”라는 단어에 대한 말과 클래스가 객체 지향 프로그래밍에 대한 일반적인 접근 방식이되었다는 인정입니다..

방법 및 속성

객체에는 대부분의 언어에서 속성 또는 속성이라고하는 변수가 있습니다. 예를 들어 Customer 객체에는 shipping_address 또는 name과 같은 속성이있을 수 있습니다..

객체에는 메소드라는 함수도 있습니다. 이것들은 객체가 할 수있는 일이며 클래스 내에서 정의됩니다. 예를 들어 Customer 오브젝트에는 checkout, change_shipping_address 또는 logout 메소드가있을 수 있습니다..

좋은 객체 지향 프로그램을 개발하는 데 필요한 과제 중 하나는 여러 잠재적 클래스로 기능을 분할하는 방법을 결정하는 것입니다. 예를 들어, 결제 방법이 고객 또는 장바구니에 속해야합니까? 고객이 로그 아웃 메소드를 소유하거나 고객이 일부 Authentication_manager 오브젝트의 로그 아웃 메소드를 호출합니까?

많은 새로운 OO 프로그래머에게 또 다른 도전은 실제 세계를 대표하지 않는 클래스를 디자인하는 방법을 이해하는 것입니다. 전자 상거래에는 제품이 필요하고 프로젝트 관리 시스템에는 프로젝트가 필요하다는 것을 이해하는 것은 매우 쉽습니다. 그러나 큰 객체 지향 프로그램에는 객체 관계형 맵퍼, 객체 팩토리 및 컨트롤러와 같은 모든 종류의 추상 기능 번들을 정의하는 수많은 클래스가 있습니다 (알기 쉬운 세 가지 예를 들기 위해).

물론 이러한 문제를 탐색하려면 실습이 필요합니다. 객체 지향 개발자는 디자인 패턴을 이해하고 모델링을 포함하는 개발 프로세스를 통해 도움을받을 수 있습니다..

다음은 클래스, 속성 및 메서드를 더 잘 이해하는 데 도움이되는 몇 가지 리소스입니다.

  • 클래스, 객체, 속성 및 메서드 개념은 이러한 개념에 대한 10 분짜리 비디오 개요입니다.
  • 속성과 메서드 간 선택은 모든 언어에 적용 할 수있는 디자인 고려 사항을 다루는 .NET 자습서입니다.
  • C #의 클래스, 메서드 및 속성을 이해하면 유용한 다이어그램과 함께 유용한 설명이 제공됩니다..

메시지 전달 및 동적 디스패치

여기에서 다루는 클래스 및 기타 여러 개념은 객체 지향 프로그래밍과 불가분의 관계가되었습니다. 그러나 용어를 만든 컴퓨터 과학자에 따르면 객체 지향 프로그래밍은 메시지 전달에 관한 것입니다..

메시지 전달은 개체가 메시지를 보내서 서로 통신하는 것을 의미합니다. 이것은 사소한 것처럼 들리지만 함수 호출 방법에 영향을 미칩니다. 한 객체가 다른 객체의 기능을 직접 호출하는 대신, 객체는 다른 객체에 메시지를 전달합니다. 메시지에는 메소드 이름과 관련 매개 변수가 포함됩니다. 그런 다음 호출 된 객체는 해당 메소드 호출을 처리 할 수 ​​있지만 필요합니다..

필요에 따라 각 객체가 메소드 호출에 대한 자체 응답을 결정하는이 기능을 동적 디스패치라고합니다. 런타임에 객체가 진화하고 현재 상태에 따라 메시지에 응답 할 수 있습니다..

특히 오늘날 사용되는 대부분의 언어는 특정 종류 (메소드 호출) 만 구현하기 때문에 메시지 전달이 다소 혼란 스러울 수 있습니다. 이해를 돕기위한 몇 가지 자료는 다음과 같습니다.

  • 어떤 사람은 OO에서 메시지 전달이란 무엇입니까? StackExchange에서; 매우 유용한 답변이 뒤따 랐습니다.
  • 또한 Smalltalk와 Java의 OO의 주요 차이점은 무엇입니까?를 참조하십시오. 메시지 전달이 원래의 아이디어에서 현대 언어로 주로 작동하는 방식으로 어떻게 바뀌 었는지에 대한 통찰력;
  • c2 위키의 메시지 전달에는 다소 혼란 스럽지만 자세한 설명이 있습니다..

캡슐화

메시지 전달 및 동적 디스패치와 밀접하게 관련된 것은 캡슐화의 개념입니다. 캡슐화는 객체 외부의 코드가 내부 데이터에 직접 액세스 할 수 없음을 의미합니다. 예를 들어 한 개체가 다른 개체의 속성을 “알아야”하는 경우 (예 : Shipping_manager가 Customer 개체의 shipping_address가 필요할 수 있음) 호출 개체는 해당 데이터를 직접 찾을 수 없습니다. Customer 객체를 “요청”하는 메시지를 전달한 다음 필요한 데이터를 반환합니다. (이는 일반적으로 메소드 호출로 수행됩니다.)

모든 객체 지향 언어가 엄격한 캡슐화를 강요하는 것은 아닙니다. 일부는 객체의 속성에 직접 액세스 (가져 오기 및 설정) 할 수 있도록합니다. 그러나 OO 개발의 많은 전문가들은 프로그래머가 캡슐화 원칙을 준수하도록 권장합니다 (속성을 직접 호출하지 않음)..

캡슐화에는 많은 이점이 있습니다. 기본적으로 속성을 호출하는 지점에서 세부 사항이나 부작용을 추상화 할 수 있습니다. 예를 들어, 특정 값을 읽을 때마다 마지막으로 계산 된 시간을 확인하고 특정 조건이 충족되면 다시 계산할 수 있습니다. 호출하는 코드의 다른 위치에 영향을주지 않고 언제든지 한 장소에서 해당 논리를 추가, 제거 또는 변경할 수 있다는 것은 캡슐화의 이점입니다..

상속과 구성

상속과 구성은 다양한 클래스와 인스턴스화 된 객체가 서로 관련되는 두 가지 방법입니다..

상속은“is a”관계를 기술합니다 : User는 Person이고; 고객은 사용자입니다. 이 예제에는 Person의 모든 속성과 메서드 (이름, 생일)를 정의하는 Person 클래스가있을 수 있습니다. 그런 다음 User 클래스는 Person 클래스를 확장하여 username 속성 또는 login 및 logout 메소드와 같은 것을 추가합니다. 그러면 고객 클래스는 사용자를 확장하여 order_history 또는 billing_address와 같이 고객에게 필요한 항목 만 추가 할 수 있습니다..

컴포지션은 한 개체가 다른 개체를 “소유”할 때 “있는”관계를 나타냅니다. 예를 들어, Customer 클래스는 Billing_address를 소유 할 수 있으며 이는 자체적으로 클래스에 정의 된 본격적인 개체입니다. 상속 계층 구조와 마찬가지로 컴포지션 계층 구조는 쉽게 여러 계층으로 구성 될 수 있습니다. 예를 들어, 고객에게 Shopping_cart가 있고 Shopping_cart에 여러 제품이 있고 각 제품에 공급 업체가있는 등이있을 수 있습니다..

객체 지향 개발의 많은 디자인 작업은 상속과 구성의 관계를 매핑하는 것과 관련이 있습니다. 통합 모델링 언어의 일부인 클래스 다이어그램은 이러한 관계를 시각화하는 데 유용한 도구입니다..

  • 상속과 구성 : 어느 것을 선택해야합니까? compex 클래스 계층을 구축 할 때 디자인 고려 사항 중 일부에 들어갑니다.
  • 구성 대 상속 : 선택하는 방법? 같은 질문을 다루지 만 다른 각도에서 유머가 더 많습니다.
  • Java 디자인 : Kirk Knoernschild의 Objects, UML 및 Process는 첫 번째 장에서 상속이 올바른 것처럼 보일 때도 구성이 더 나은 이유를 설명하는 “복합 재사용 원칙”섹션을 포함합니다..

다형성

다형성 (또는 더 구체적으로, 아형 다형성)은 자연적으로 상속에서 나오는 개념이다. 부모 클래스 (또는 “슈퍼 클래스”)에 특정 메서드가있는 경우 모든 하위 클래스 ( “하위 클래스”)에도 메서드가 있습니다. 각 서브 클래스는 메소드를 다르게 구현할 수 있지만 호출하는 오브젝트는 호출하는 여러 서브 타입을 알 필요가 없습니다. 그들은 모든 다른 하위 유형의 객체를 동등한 것으로 취급 할 수 있습니다..

다형성은 큰 주제이며 논쟁의 여지가 없습니다. 다음은 머리를 감싸는 데 도움이되는 몇 가지 리소스입니다.

  • Java의 다형성-메소드 오버로드 및 재정의는 다형성에 대한 부드러운 소개입니다.
  • 객체 지향 프로그래밍 개념 : 다형성 및 인터페이스는 특히 ActionScript에 관한 것이지만 다양한 문제와 제한 사항을 포함하여 주제에 대해 많은 세부 정보를 제공합니다.
  • 다형성 — C ++의 객체 지향 프로그래밍은 훌륭한 비디오 설명입니다.
  • Liskov 대체 원칙 (PDF)은 하위 유형을 이해하는 데 도움이되는 프레젠테이션입니다..

객체 지향 프로그래밍에 대해 더 알아보기

객체 지향 프로그래밍에 대한 깊은 이해를 위해 주제에 관한 많은 고전 및 현대 도서는 귀중하며 온라인 자습서로 거의 대체 할 수 없습니다..

  • 디자인 패턴 : 재사용 가능한 객체 지향 소프트웨어의 요소 인 Gamma 등은 주류 개발자에게 객체 지향 프로그램을 소개 한 고전 서적입니다. 여전히 필독입니다.
  • Booch 등의 응용 프로그램을 사용한 객체 지향 분석 및 디자인은 OO 코드 작성을 넘어 시스템 분석 및 디자인 인 OOP 동작의 핵심에 도달합니다.
  • Matt Weisfeld의 Object-Oriented Thinkt Process는 절차 적 또는 기능적 프로그래밍에 능숙하고 객체와 클래스에 대한 사고를 재교육해야하는 개발자에게 좋은 책입니다.
  • Keogh와 Giannini의 OOP Demystified는 객체 지향 분석 및 디자인 프로세스를 적용하는 데 필요한 기술과 사고에 중점을 둔 실제 앱 개발의 맥락에서 OOP에 대한 자습서를 제공합니다.
  • Bertrand Meyer의 Object-Oriented Software Construction은 OO에 대한 고전 서적으로, 개념의 기본이되는 기술과 철학을 최초로 발표했습니다. 이 책의 일부 자료는 날짜가 지난 것처럼 보이지만 기본 사항은 여전히 ​​관련이 있습니다.
  • 설명 된 디자인 패턴 : Shalloway와 Trott의 객체 지향 디자인에 대한 새로운 관점은 반복되는 문제를 해결하기위한 디자인 패턴의 실천 또는 재사용 가능한 전략을 발전시키는 가장 중요한 책입니다.
  • 개체 모델 : Coad, North 및 Mayfield의 전략, 패턴 및 응용 프로그램은 설명 된 디자인 패턴의 좋은 동반자이며 개체 지향 프로그래밍을위한 많은 추가 패턴 및 전략을 제공합니다..

보다 실용적이고 현대적인 객체 지향 프로그래밍 개념을 이해하려면 다음 온라인 리소스 중 하나 이상을 시도하십시오.

  • 빠른 학습 객체 지향 프로그래밍은 Mozilla Developer Network의 Python 기반 튜토리얼입니다.
  • 객체 지향 프로그래밍 개념은 Java 관점에서 객체 지향 프로그래밍 기본 사항을 다루는 Oracle의 튜토리얼입니다.
  • 객체 지향 프로그래밍 튜토리얼은 핵심 개념에 대한 언어 독립적 인 소개를 제공합니다.
  • 객체 지향 프로그래밍 개념 및 기타 소개는 객체 지향 프로그래밍과 소프트웨어 아키텍처 및 디자인 패턴과 같이 밀접하게 관련된 여러 주제에 대한 훌륭한 개요입니다.
  • Codecademy의 객체 지향 프로그래밍 검토에서는 JavaScript 및 브라우저 내 편집기를 사용하여 개념을 즉시 작업 할 수 있습니다 (하지만 JavaScript는 OOP 개념을 약간 다르게 구현한다는 점을 기억하십시오).
  • 객체 지향 프로그래밍 기본 사항은 실제 클래스에 유용한 예제가 많은 또 다른 Java 자원입니다..

중요한 객체 지향 언어

모든 프로그래밍 언어가 객체 지향 프로그래밍을 지원하는 것은 아닙니다. 일부 언어는 OOP 만 지원하도록 설계되었습니다. 다른 것들은 프로그래밍에 대한 다양한 접근을 허용합니다. 또 다른 것들은 객체 지향적 인 것처럼 보이지만, 비표준 적이거나 불완전하거나 평범한 특이한 방식으로 객체 지향 개념을 구현합니다..

다음은 객체 지향에 대한 접근 방식과 해당 언어로 OOP에 참여하는 데 도움이되는 참고 자료와 함께 가장 널리 사용되는 OO 가능 언어 목록입니다..

인터넷은 언어 X와 언어 Y를 보는 수필로 가득 차 있습니다. 대부분은 표면을 긁는 것입니다. 보다 일반적인 프로그래밍 언어 비교를 확인하시기 바랍니다. 이 신중한 분석은 몇 가지 인기있는 OO 언어의 특정 세부 사항을 살펴보고 각 OO 개념이 어떻게 구현되는지 논의.

C 기반 언어

C는 객체 지향 언어가 아닙니다. 그러나 최소한 OO 코드를 작성할 수 있습니다.

  • ANSI-C를 사용한 객체 지향 프로그래밍 (PDF)
  • 객체 지향 ANSI C에 대한 Phil의 가이드
  • C에서 객체 지향 프로그래밍.

이러한 서적과 기사에 설명 된 기술 중 어느 것도 사소하지 않은 프로그램에 대해 강력하거나 다루기가 쉽지 않습니다. C를 한계까지 늘리려 고하는 대신 객체 지향 언어 도구를 포함하는 C의 세 가지 하위 항목이 있습니다..

씨++

C ++은 다중 패러다임입니다. 즉, 객체 지향을 포함하여 여러 가지 다른 프로그래밍 방법 (PDF)을 지원합니다. C를 기반으로하며 OOP의 클래스 개념에 대한 지원을 추가하기 위해 특별히 개발되었습니다..

  • C ++의 객체 지향 프로그래밍 (OOP) : 컴퓨터 과학 교수의 훌륭한 소개 안내서
  • C ++에서 객체 지향 프로그래밍 학습 : OOP에 대한 대규모의 다중 파트 자습서
  • C ++ 자습서 20-1 — 클래스 및 객체 지향 프로그래밍 : C ++에 대한 더 큰 비디오 시리즈의 일부인이 세션에서는 OOP 개념에 대해 설명합니다.
  • C를 사용한 객체 지향 프로그래밍 소개++
  • C에서 객체 지향 프로그래밍++.

씨#

C # (“C sharp”)은 Microsoft의 .NET Framework에서 사용하기 위해 C ++보다 개선 된 기능으로 설계된 또 다른 C 파생물입니다..

  • C #에서 객체 지향 프로그래밍
  • C # 객체 지향 프로그래밍 기본에서 고급 (비디오)
  • C # OOPS 개념 (비디오)
  • C #의 객체 지향 프로그래밍 기본 사항 : PLuralsight의 고급 자습서 (무료 평가판 사용 가능)
  • C #의 객체 지향 프로그래밍 개념 소개 : C #의 추상화, 캡슐화, 상속 및 다형성에 대해 설명합니다.
  • C # .NET의 상위 10 개 OOPS 개념 예 : 이미 OOP 개념을 이해하고 있다면 C #으로 방향을 잡는 훌륭한 빠른 가이드
  • C # 학습 : 객체 지향 프로그래밍 언어를 익히는 방법 : C # 및 OOP 학습에 가장 잘 접근하는 방법에 대한 고급 개요
  • C # 객체 지향 프로그래밍 시작.

목표 -C

Objective-C는 C에 OOP 기능을 추가하는 것과 같은 목표를 가지고 C ++과 거의 같은 시간에 개발되었습니다. 오늘날 Objective-C는 OS X 및 iOS 용 Apple Cocoa Development Platform과 GNUstep에서 실제로 사용됩니다. 오픈 소스 대안.

  • Objective-C를 사용한 객체 지향 프로그래밍
  • 객체 지향 디자인 소개
  • 객체 지향 프로그래밍 및 Objective-C 언어 (PDF)
  • 객체 지향 프로그래밍 소개.

공통 리스프

리스프는 본질적으로 객체 지향적이 아닙니다. 그러나 가장 널리 사용되는 Lisp 언어 중 하나 인 Common Lisp에는 OOP 기능을 제공하는 CLOS (Common Lisp Object System)가 포함되어 있습니다..

CLOS에서 구현 된 객체 지향에 대한 접근 방식은 OO가 다른 언어로 처리되는 방식과 근본적으로 다릅니다. 이는 일반적으로 OO를 배우거나 다른 유형의 언어로 OO를 적용하려는 경우 CLOS가 시작하기에 좋은 장소가 아님을 의미합니다. 그러나 Lisp에 들어가면 CLOS가 매우 중요합니다. 또한 OOP가 특히 흥미 롭다면 CLOS를 공부하여 다른 관점에서 OO 개념을 볼 수 있습니다..

  • CLOS의 기초
  • CLOS에 대한 간단한 안내서
  • 공통 리스프 오브젝트 시스템 : 개요 (PDF)
  • CLOS : 객체 지향 및 기능 프로그래밍 통합 (PDF)
  • COMMON LISP의 객체 지향 프로그래밍 : CLOS 프로그래머 가이드.

에를 랑

일부 기존 관점에 따르면 Erlang은 객체 지향 언어가 아닙니다. 그러나 이에 반하는 매혹적인 소수 의견이 있으며 그 지지자들은 Erlang이 가장 객체 지향 언어이거나 Erlang이 유일한 객체 지향 언어라고 주장합니다..

이것의 대부분은 엘릭서에도 적용됩니다. 반면에 이것은 아마도 실제 OO가 아닌 단지 OO 스타일 일 것입니다.

에프#

F # ( “F sharp”)는 다중 패러다임 언어입니다. 핵심은 실제로 함수형 프로그래밍이지만 OO 지원을 포함하며 프로그래밍에 대한 두 가지 다른 접근 방식을 조정하려고 시도합니다..

  • “F #의 객체 지향 프로그래밍”시리즈
  • F # 퀵 가이드 : 객체 지향 프로그래밍
  • F # 개요 — 명령 및 객체 지향 프로그래밍
  • 객체 지향 F # — 클래스 만들기
  • F #의 객체 지향 프로그래밍 (PDF)
  • F #에 클래스가없는 OOP.

포트란

포트란은 여전히 ​​가장 많이 사용되는 프로그래밍 언어입니다. 1950 년대에 발명되었을 때, 객체 지향과 같은 것은 없었습니다. Fortran 2003 릴리스의 언어와 함께 명시 적 OOP 지원이 Fortran에 추가되었습니다. 그러나 이전 버전의 언어에서 기본적인 OOP 개념을 구현할 수있었습니다..

  • 포트란이 객체 지향되기 전에 포트란의 OOP :
    • Fortran 90의 유사 객체 지향 스타일
    • Fortran 90을 통한 객체 지향 프로그래밍 (PDF)
    • Fortran90을 사용한 객체 지향 개념 소개.
  • 공식적으로 지원되는 포트란의 OOP :
    • Fortran 2003의 객체 지향 프로그래밍
    • 실제로 현대 포트란
    • FORTRAN 2003의 과학적 프로그래밍 : 객체 지향 프로그래밍을 포함한 튜토리얼 (PDF).

가다

Go는 2007 년에 Google에서 개발 한 비교적 새로운 언어입니다. Go가 객체 지향인지 아닌지에 대한 많은 토론이 있습니다..

Go에는 “개체”또는 “클래스”라는 것이 없지만 유사한 구조가 있습니다. 특정 관점에서 Go를 객체 지향으로 생각할 수 있습니다..

실제로 많은 사람들은 Go가 OO라고 생각합니다.

  • 객체 지향 디자인으로 이동
  • 진행중인 객체 지향 프로그래밍
  • 이동중인 객체 지향 언어 패턴
  • 객체 지향 프로그래머 또는 객체가없는 객체 지향 프로그래밍 (비디오)
  • 고통없이 진행되는 객체 지향 프로그래밍의 우수성 요약.

자바

자바는 처음부터 객체 지향적으로 만들어졌습니다. 다음은 Java로 진행할 수있는 유용한 자료입니다.

  • 객체 지향 시스템 설계 : 코드, 유인물, 강의 슬라이드 및 강좌를 통해 자신이 직접 과정을 진행하는 데 필요한 거의 모든 링크가 포함 된 Stanford CS108 웹 사이트
  • 자바 튜토리얼 : 객체 지향 프로그래밍 개념
  • Java Programming Tutorial 객체 지향 프로그래밍 (OOP) 기본 사항
  • 객체 지향 프로그래밍 개념 (6 비디오 시리즈)
  • 객체 지향 프로그래밍 — Java 튜토리얼
  • Java 기초 학습서 : Java의 객체 지향 프로그래밍
  • 자바에서의 객체 지향 프로그래밍
  • Java를 사용한 객체 지향 프로그래밍 기본 사항 (PDF).

자바 스크립트

많은 사람들이 JavaScript가 실제로 객체 지향적이라고 생각하지 않습니다. 그러나 다른 많은 사람들은 그것이.

우리는 우리의 임무가 당신이 유용한 자원을 찾도록 도와주는 것이며, 논쟁의 여지가없는 논쟁에서 편을 들지 않도록합니다. JavaScript에 대한 OOP 리소스는 다음과 같습니다.

  • 객체 지향 JavaScript 소개 (Mozilla Developer Network)
  • JavaScript : 세계에서 가장 오해 된 프로그래밍 언어
  • JavaScript의 OOP : 알아야 할 사항
  • 객체 지향 JavaScript : 확장 가능하고 재사용 가능한 고품질 JavaScript 응용 프로그램 및 라이브러리 생성
  • 객체 지향 JavaScript의 원리
  • 객체 지향 JavaScript (비디오).

PHP

PHP는 버전 4까지 기본적인 OO 개념조차 지원하지 않았으며 PHP5까지 완전한 객체 지향을 지원하지 않았습니다..

  • 초보자를위한 객체 지향 PHP
  • 절대 초보자를위한 객체 지향 PHP
  • PHP에서 객체 지향 프로그래밍의 원리
  • 객체 지향 PHP (비디오)
  • 객체 지향 PHP : 개념, 기법 및 코드.

파이썬

파이썬 코드는 객체 지향 일 필요는 없지만 언어는이를 완벽하게 지원합니다. 다음 자료를 확인하십시오.

  • 객체 지향 프로그래밍 : MIT의 Open Courseware에서 Python을 통해 OOP 소개
  • 파이썬에서 객체 지향 프로그래밍
  • 파이썬 향상 : 파이썬 클래스와 객체 지향 프로그래밍
  • 파이썬 코스 : 객체 지향 프로그래밍
  • 파이썬 3 객체 지향 프로그래밍.

루비

루비에서 모든 것은 객체, 심지어 문자열과 정수와 같은 “원시”데이터 타입입니다. 그 중 하나에 더하기 메소드를 호출하여 두 개의 정수를 추가합니다. length 메소드를 호출하여 문자열의 길이를 찾습니다..

  • 루비 사용자 가이드 : 객체 지향적 사고
  • 루비 모듈 : 루비 프로그래밍 언어의 주요 OOP 기능
  • 루비의 실용 객체 지향 디자인.

잡담

스몰 토크는 아마도 가장 영향력있는 객체 지향 언어 일 것입니다. 나중에 나오는 언어에 큰 영향을 미쳤습니다. 결과적으로 적어도 그것에 익숙해지는 것이 좋습니다. 다음 자료를 통해 시작할 수 있습니다.

  • 스몰 토크를 사용한 객체 지향 프로그래밍 (PDF)
  • 스몰 토크 및 객체 지향 : 소개 (PDF)
  • 스몰 토크 : 언어 시작하기 (비디오)
  • 프로그래밍 스몰 토크 – 처음부터 객체 지향 : 프로그래밍 원리 소개.

반면에…

다재다능한 개발자가 되려면 모든 개념의 장점과 단점을 모두 이해하는 것이 중요합니다. 비록 객체 지향이 프로그래밍을 이해하는 주된 방법이되었지만, 아이디어 자체와 그 주변의 과대 문화 모두에 대한 정당한 비판이 있습니다..

다음은 OOP에 대한 반론을 제시하는 몇 가지 자료입니다.

  • 객체 지향 프로그래밍은 반드시 끝내야하는 비싼 재난입니다
  • 객체 지향 프로그래밍은 본질적으로 유해합니다
  • 객체 지향 프로그래밍 : 재해 이야기.

오늘날 객체 지향 프로그래밍

객체 지향 프로그래밍은 컴퓨터 프로그래밍에서 중요한 방법론으로 남아 있지만 더 이상 “좋은 소프트웨어 개발”에 대한 업계 표준으로 자리 매김하지 않습니다. 이를 지원하는 새로운 언어와 함께 다른 패러다임, 특히 기능적 프로그래밍이 최전방에 나옵니다. 한편, 객체 지향 프로그래밍과 디자인 패턴 이동에 대한 비판이 증가하고 있습니다..

그러나 오늘날 작성된 많은 양의 소프트웨어는 객체 지향적입니다. 일반적인 객체 지향 언어로 작업하는 경우 기본 객체 지향 개념을 잘 이해해야합니다..

더 흥미로운 것들

코딩 및 개발과 관련된 프로그래밍 가이드, 자습서 및 인포 그래픽이 더 있습니다.

  • C ++ 개발자 리소스 : C ++에 대한 정보 외에도 객체 지향 프로그래밍에 대한 자세한 정보가 있습니다..
  • Linux 프로그래밍 소개 및 리소스 : 객체 지향 프로그래밍에 대해서는 특별히 언급되지 않았지만 여러 수준의 Linux 프로그래밍에 대한이 토론은 사용자에게 활력을 불어 넣습니다..
  • INTERCAL 소개 및 리소스 : 객체 지향 프로그래밍이 어렵다면 INTERCAL을 공부하면 쉽게 보일 수 있습니다. 이 패러디 (또는 농담) 언어는 너무 복잡하고 끔찍하여 다형성에 대한 가장 깊은 토론조차도 즐거워 보일 것입니다.

어떤 코드를 배워야합니까?

코딩해야 할 프로그래밍 언어에 대해 혼란 스러우십니까? 인포 그래픽, 어떤 코드를 배워야합니까?를 확인하십시오. 언어의 다양한 측면에 대해서만 논의 할뿐만 아니라“생활에 필요한 Java를 얼마만큼 돈을 벌 수 있을까요?”와 같은 중요한 질문에 답변합니다.

어떤 코드를 배워야합니까?
어떤 코드를 배워야합니까?

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map