초보자를 위한 OOPS 개념 설명

게시 됨: 2022-12-20

컴퓨터 프로그램의 역할은 복잡한 실제 요구 사항을 컴퓨터가 이해할 수 있는 지침으로 성공적으로 모델링하는 것입니다. 이를 달성하기 위해 여러 프로그래밍 패러다임이 서로 다른 철학에 따라 작동합니다. 여기에는 함수형 프로그래밍, 절차적 프로그래밍, 객체 지향 프로그래밍 등이 포함됩니다. 이러한 패러다임은 작동 방식에 따라 다르므로 언어 ​​독립적입니다.

이 기사에서는 객체 지향 프로그래밍에 대해 자세히 살펴보겠습니다. OOPS의 복잡성에 대해 알아보기 전에 다음은 OOPS가 작동하는 네 가지 기둥이므로 염두에 두어야 할 Java 의 몇 가지 주요 OOP 개념 입니다.

  • 추출
  • 캡슐화
  • 계승
  • 다형성

이 문서의 뒷부분에서 이러한 OOP 개념 에 대해 자세히 설명합니다. 그러나 먼저 객체 지향 프로그래밍이 정확히 무엇인지 이해합시다.

목차

객체 지향 프로그래밍이란 무엇입니까?

객체 지향 프로그래밍 이전에는 함수형 프로그래밍이 지배적인 프로그래밍 패러다임이었습니다. C 및 COBOL과 같은 언어는 이 패러다임을 따랐으므로 이러한 언어를 사용하여 작성된 프로그램은 일련의 지침이었습니다. 이들은 소스 코드를 모듈화하고 더 읽기 쉽게 유지하기 위해 서브루틴 또는 절차를 사용했습니다. 기능적 프로그래밍 패러다임은 데이터보다 논리에 더 중점을 두었고 프로그램은 데이터와 프로그램을 모두 결합했습니다.

C++, C#, Java 등과 같은 프로그래밍 언어는 C 이후 객체 지향 프로그래밍 접근 방식으로 이동했습니다. OOP는 간단한 논리 기반 명령을 덮어쓰는 데이터에 우선순위를 두었습니다. 본질적으로 객체는 프로그램에서 모델링하려는 모든 것입니다. 그것은 무엇이든 될 수 있습니다. 지금 막연하게 들린다면 끝까지 버티면 이것이 의미하는 바를 정확히 이해하게 될 것입니다!

클래스와 객체는 무엇입니까?

객체 지향 프로그래밍은 클래스 및 객체와 함께 작동합니다. 따라서 이 두 용어의 의미와 서로 어떻게 다른지 이해하는 것이 중요합니다. 간단히 말해서 클래스는 필요할 때 개체를 만드는 데 도움이 되는 청사진이라고 생각하면 됩니다.

클래스의 역할은 다양한 속성과 다양한 동작을 정의하는 것입니다. 따라서 프로그램에서 차량을 모델링하려면 차량에 대한 클래스를 만들고 바퀴 수, 색상, 모델, 연령 등과 같은 속성을 유지합니다. 반면 동작은 시작, 가속, 제동 등과 같습니다. 보시다시피 우리가 정의한 속성과 동작은 하나의 차량에만 국한되지 않습니다. 본질적으로 서로 다른 차량에 걸쳐 서로 다른 동작과 속성을 포함합니다. 이렇게 하면 새 차량 개체를 인스턴스화하려는 경우 해당 차량별로 속성을 지정할 수 있습니다. 이러한 방식으로 클래스는 동일한 특성과 동작을 가진 새 개체를 만들기 위한 완벽한 청사진 역할을 합니다.

클래스 차량과 다양한 속성 및 동작은 다음과 같습니다. 코드를 작성하기 위해 Java 구문을 사용했지만 프로그래밍 패러다임은 언어 중립적이라는 점을 기억하십시오.

공공 클래스 차량{

개인 문자열 _color;

개인 int _model;

개인 문자열 _makeYear;

개인 문자열 _fuelType;

공공 무효 시작(){ }

공공 무효 가속() {}

공공 무효 중지() {}

}

정의된 클래스를 사용하여 공통 동작을 가지면서 속성이 다른 다양한 객체를 생성할 수 있습니다. 예를 들어:

개체 1
모델 알토
연료 CNG
만들다 2018년
시작()

부서지다()

가속()

개체 2
모델 왜건R
연료 가솔린
만들다 2017년
시작()

부서지다()

가속()

이러한 방식으로 객체 지향 프로그래밍의 클래스는 실제 세계의 복잡한 동작 및 시스템 모델링을 단순화하는 데 도움이 될 수 있습니다. 모든 데이터, 속성 및 함수는 모든 클래스의 개체에 바인딩됩니다. 이렇게 하면 전역 데이터를 보관할 필요가 없습니다. 이것은 절차적 프로그래밍과 객체 지향 프로그래밍 접근 방식의 중요한 차이점입니다.

기본 사항이 정리되면 객체 지향 프로그래밍의 네 가지 요소를 자세히 살펴보겠습니다.

세계 최고의 대학에서 데이터 과학 인증받으세요 . 경력을 빠르게 쌓을 수 있는 고급 PG 프로그램, 고급 인증 프로그램 또는 석사 프로그램을 배우십시오.

추출

추상화는 작업이 수행되는 방식 대신 수행되는 작업에 집중하는 것입니다. 추상화 뒤에 있는 전체 아이디어는 서로 의존하지 않고 상호 작용할 수 있는 독립적인 모듈을 구축하는 데 도움을 주는 것입니다. 이렇게 하면 프로그램 유지 관리도 더 쉽고 관리하기 쉬워집니다. 추상화를 통해 OOP는 해당 기능이 구현되는 방식이나 시스템 내부 작동 방식을 고려하지 않고 필수 기능만 나타내려고 합니다.

파이썬에서 가장 중요한 OOPS 개념 중 하나 뒤에 있는 아이디어 는 프로그래머가 현재 모듈에 직접적으로 중요한 것에만 집중하면 된다는 것입니다. 하나의 모듈을 수정해도 다른 독립 모듈에 직접적인 영향을 미치지 않아야 합니다. 프로그래머는 현재 모듈과 그것이 제공하는 것에 대한 지식만 필요합니다. 필요한 것을 달성하기 위해 모듈의 배경 작업을 이해할 필요가 많지 않습니다. 따라서 해당 정보는 최상의 결과를 위해 추상화됩니다.

프로그래밍 이상으로 추상화 개념을 적용한다면 추상화가 본질적으로 어디에나 있다는 것을 깨닫게 될 것입니다. 우리가 매일 다루는 대상은 다양한 수준에서 추상화됩니다. 예를 들어, 우리는 자동차 브레이크의 내부가 어떻게 작동하는지 모르지만 커튼 뒤의 메커니즘을 추상화하면서 브레이크를 적용할 수 있는 페달을 제공받았습니다. 그렇게 하면 작동 방식에 대해 걱정할 필요가 없습니다. 페달을 밟기만 하면 됩니다.

캡슐화

캡슐화 개념은 이전의 추상화 개념과 밀접하게 연결되어 있습니다. 본질적으로 캡슐화는 최종 사용자가 문제 영역을 완전히 이해하지 않고도 문제에 대한 솔루션을 제공하는 것입니다. 이를 위해 캡슐화는 모든 데이터와 동작을 단일 단위로 함께 묶습니다. 그런 식으로 최종 사용자는 추상화가 구현되는 모든 내부 요소에 대해 알 수 없습니다.

사용자는 데이터에 직접 액세스할 수 없으며 노출된 기능을 사용하여 필요할 때 데이터에 액세스합니다. 개체의 내부를 숨김으로써 OOPS 프로그래밍 패러다임은 모듈의 무결성을 보호하고 사용자가 내부 데이터를 일관성 없는 상태로 설정하는 것을 허용하지 않습니다. 그렇지 않으면 장기적으로 많은 문제가 발생할 수 있습니다. 따라서 이러한 방식으로 캡슐화는 오류를 방지하는 방식으로 복잡성을 노출하는 것이지 복잡성을 완전히 숨기는 것이 아닙니다.

계승

상속은 객체 지향 프로그래밍 패러다임의 또 다른 강력한 기능입니다. 상속의 역할은 클래스를 계층 구조로 효율적이고 신속하게 배열하고 구성하여 이러한 클래스가 계층 구조의 위에 있는 클래스로부터 동작과 특성을 상속할 수 있도록 하는 것입니다. 본질적으로 상속은 "관계"로 이해될 수 있으며, 이는 우리가 현실 세계에서 사물에 대해 이야기하는 방식과 매우 유사합니다.

예를 들어, 우리는 "앵무새는 새다"라고 말합니다. 즉, 앵무새는 bird 클래스의 개체이므로 더 넓은 클래스에서 일부 특성과 동작을 상속합니다. 그러나 은행이 은행 계좌라고 하면 정확하지 않습니다. 그것이 상속의 계층 구조가 작동하는 방식이며 나중에 특수화된 클래스에 대해 특화될 수 있는 동작 및 구현을 정의할 수 있습니다. 상속은 역방향으로 작동하지 않는다는 점을 명심하십시오. 따라서 부모 클래스는 자식 클래스로부터 어떤 것도 상속받지 않습니다. 그러나 자식 클래스는 속성과 동작(공용 또는 비공개)의 특성에 따라 부모 클래스에서 속성과 동작을 모두 상속합니다. 상속은 프로그램을 재사용하는 방법이며 전체 소스 코드를 더 짧고 훨씬 더 이해하기 쉽게 만드는 데 도움이 될 수 있습니다. 그러나 필요하지 않은 경우 상속 수준 뒤에 수준을 추가하면 안 된다는 점을 기억해야 합니다.

US 확인 - 데이터 과학 프로그램

데이터 과학 및 비즈니스 분석의 전문 인증 프로그램 데이터 과학 석사 데이터 과학 석사 데이터 과학의 고급 인증 프로그램
데이터 과학의 임원 PG 프로그램 파이썬 프로그래밍 부트캠프 비즈니스 의사 결정을 위한 데이터 과학 전문 인증 프로그램 데이터 과학의 고급 프로그램

다형성

다형성은 Python 및 Java의 많은 중요한 OOPS 개념 중 하나이며 기본적으로 실행 가능한 단위의 다양한 가능한 구현과 사용자가 이러한 변경 사항을 인식하지 않고 백그라운드에서 진행되는 모든 미묘한 차이점을 처리합니다. 다형성(Polymorphism)은 컴퓨터 프로그램이 특별한 객체로 쉽게 확장될 수 있도록 합니다.

예를 들어 종이에 글을 쓰고 싶다면 펜, 마커, 크레용 또는 연필을 사용할 수 있습니다. 필요한 것은 손에 꼭 맞고 종이에 대고 누를 때 기호를 만드는 데 도움이 되는 것뿐입니다. 따라서 쓰는 행위는 종이에 기호를 만드는 데 도움이 되는 반면 필요한 도구는 선택에 따라 다릅니다.

이런 의미에서 상속은 프로그램이 다형성을 달성하는 방법이며, 메서드의 사용자 지정 구현은 상속된 클래스에 정의된 동작을 덮어씁니다. 이 프로세스는 런타임 다형성 또는 메서드 재정의라고도 합니다. 메서드 오버로딩이라고도 하는 다형성의 또 다른 형태가 있습니다. 그 점에서 상속은 전혀 고려되지 않습니다. 메서드 오버로딩에서 메서드 이름은 동일하게 유지되지만 메서드의 인수는 수행할 작업에 따라 다릅니다.

결론적으로

이것으로 Java의 OOPS 개념에 대한 논의를 마치겠습니다 . 지금까지 논의한 내용은 아무것도 걱정하지 않고 객체 지향 프로그래밍을 시작하는 데 필요한 모든 기반을 설정했습니다. 토론을 구현하고 직접 시도해야 합니다. 결국 프로그래밍은 연습과 인내에 관한 것입니다.

OOPS에 대한 지식은 OOPS 패러다임에 의존하는 Python과 같은 언어를 사용하게 되므로 데이터 과학 여정에도 도움이 될 것입니다. 데이터 과학은 호황을 누리고 있는 분야이며 올바른 기술과 지식을 가진 사람들에게 기회가 부족하지 않습니다. 애리조나 대학교와 공동으로 upGrad 의 데이터 과학 석사를 확인하고 경력 전반에 걸쳐 도움이 될 강력한 동문 네트워크와 함께 업계 전문가로부터 배울 기회를 얻으십시오.

OOPS의 네 가지 개념은 무엇입니까?

OOPS의 네 가지 핵심 개념은 추상화, 캡슐화, 상속 및 다형성입니다.

클래스와 객체는 어떻게 다른가요?

클래스는 모델링할 현상의 청사진입니다. 반면에 개체는 개체가 인스턴스화되는 클래스에서 동작과 특성을 차용하는 클래스의 특정 인스턴스입니다.

OOPS는 어떤 언어로 작동합니까?

OOPS는 언어 중립적인 프로그래밍 철학입니다. C++, Java, Python, Ruby 등과 같은 최신 프로그래밍 언어를 사용하여 OOPS에서 작업할 수 있습니다.