티스토리 뷰

객체지향프로그래밍이란?

컴퓨터 프로그래밍의 패러다임중 하나입니다.

프로그래밍에서 필요한 데이터를 추상화 시켜 상태와 행위를 가진 객체로 만들고,

객체들간의 상호작용을 통해 로직을 구성하는 프로그래밍 방법입니다.

현실세계의 개체를 기계의 부품처럼 하나의 객체로 만들어, 기계의 부품들을 조립하여 제품을 만들 듯이 소프트웨어를 개발할때도 객체들을 조립해서 프로그램을 작성하는 기법입니다.

 

* 컴퓨터 프로그래밍의 패러다임종류

더보기

구조적 프로그래밍 (Structured Programming) - 기능 중심적 개발

   * 프로그래밍이라는 기술이 시작되면서 가장 처음으로 적용된 패러다임

 

객체 지향 프로그래밍 (Object-Oriented Programming, OOP) - 프로그램의 처리단위가 객체인 프로그래밍 방법

   * "현실세계를 프로그램으로 모델링"하는 가장 대표적인 프로그래밍 패러다임

 

함수형 프로그래밍 (Functional Programming) - 함수 중심적 개발

   * 세가지 패러다임중 가장 초기에 만들어졌지만, 최근들어 주목받기 시작한 패러다임

 

 

객체 지향 패러다임의 4가지 주요 특성

추상화( Abstraction )

    사전적 의미 - 사물이나 표상을 어떤 성질, 공통성, 본질에 착안하여 그것을 추출하여 파악하는 것

    ● 객체의 공통적인 속성과 기능을 추출하여 정의하는것, 즉 공통된 부분을 모아 상위 개념으로 새롭게 정의하는 것입니다.

    ● 불필요한 세부 사항을 생략하고, 중요한 특징만을 강조함으로써 코드를 더욱 간결하고 관리하기 쉽게 만드는 원칙입니다.

    ● 전체 시스템의 구조를 명확하게 이해하게 되고, 테스트를 더욱 쉽게 작성할 수 있게 됩니다.

    ● 클래스를 설계할 때,

       공통적으로 묶일 수 있는 기능을 추상화(Abstraction) → 추상 클래스(Abstract Class) → 인터페이스(Interface) 순으로         정리한다면, 여러 클래스 간의 일관성을 유지하면서,

       다양한 형태로 확장될 수 있는 코드, 즉 다형성(Polymorphism)이 가능해집니다.

 

* 인터페이스(Interface)

더보기

클래스 정의할 때 메소드와 속성만 정의하여 인터페이스에 선언된 프로퍼티 또는 메소드의 구현을 강제하여 코드의 일관성을 유지하게 함.

 

상속( Inheritance )

    ● 하나의 클래스가 가진 특징(함수, 변수, 데이터)을 다른 클래스가 그대로 물려 받는것을 의미합니다.

    ● 클래스들 간 공유하는 속성과 기능들을 반복적으로 정의할 필요 없이 딱 한 번만 정의해두고

        간편하게 재사용할 수 있어 반복적인 코드를 최소화하고 공유하는 속성과 기능에 간편하게 접근해 사용합니다.

    ● 개별 클래스를 상속 관계로 묶음으로써 클래스 간의 체계화된 구조를 쉽게 파악할 수 있게 됩니다.

    ● 상위 클래스의 데이터와 메서드를 변경함으로써 전체 코드에 대한 일관성을 유지할 수 있습니다.

 

다형성( Polymorphism ) - “오버로딩”, “오버라이딩”, “함수형 인터페이스”

    ● 하나의 객체(클래스)가 다양한 형태로 동작하는것을 의미 즉,

       객체가 가진 특성에 따라 같은 기능이 다르게 재구성되는 것을 의미합니다.

    ● 동일한 메서드나 함수 명을 사용하더라도, 클래스마다 그 메서드가 다르게 동작하는 것이 다형성의 핵심입니다.

    ● 오버라이딩을 통해 특정 서비스의 기능을 유연하게 변경하거나 확장할 수 있게 합니다( 역할(인터페이스)과 구현을 분리 )

    ● 동일한 메서드나 함수 명을 사용하더라도, 클래스마다 그 메서드가 다르게 동작하는 것이 다형성의 핵심입니다.

 

캡슐화( Encapsulation )

    ● 객체 내부의 세부적인 사항을 감추는것, 즉 중요한 정보를 외부로 노출시키지 않는것

 

객체란?

 

프로그램에서 사용되는 데이터 또는 식별자에 의해 참조되는 공간을 의미합니다.

값을 저장할수 있는 변수가 있고 변수를 활용해서 작업하는 메소드도 있는데

이러한 연관된 것들을 묶은것을 객체라고 합니다.

 

보통 자동차 클래스로 비유를 많이 합니다.

자동차라는 클래스 안에는
자동차의 속성으로는 색상속성, 자동차의 속도, 자동차의 부품이 있을수 있고
자동차의 기능으로는 주행기능, 정지기능, 경적울리기 기능들이 있습니다.

색상 = 노란색, 속도= 60KM, 부품 = 핸들
기능 = 주행기능, 정지기능, 경적울리기기능
이 모든것들이 합쳐져서 노란색의 60키로를 달리고 핸들이 있는 주행및 정지와 경적을 울릴수 있는 자동차가 되었습니다.


속성 -  변수
기능 - 메서드
속성과 기능이 합쳐져서 만든것 =  클래스
Car클래스가 자동차의 속성과 메서드를 정의하고
노란색의 차 객체가 이러한 Car클래스를 기반으로 생성이 된걸 나타냅니다.

 

 

 

 

 

 

 

 

배워나가는 코린이 입니다!!

부족한게 있다면 댓글로 지적해주세요!! 감사합니다!😊

'프로그래밍 기초 > CS' 카테고리의 다른 글

REST API란?  (0) 2024.01.23
웹서버란?  (0) 2024.01.18
웹과 HTTP  (0) 2024.01.17
자료구조[선택정렬(Selection Sort)]  (1) 2024.01.09
[자료구조] 삽입정렬(Insertion Sort)  (0) 2024.01.09
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/09   »
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
글 보관함