본문 바로가기
백수

객체 지향 프로그램밍(OOP : Object-oriented programming)

728x90
반응형

객체 지향 프로그램밍(OOP : Object-oriented programming)

객체 지향 프로그래밍 이란
기능과 논리가 아닌 데이터, 객체를 중심으로 소프투에어를 설계하고 구성하는 컴퓨터 프로그래밍 모델 입니다.
객체는 고유 속성, 동작이 있는 데이터를 필드로 정의 가능 합니다.

OOP 란
개체를 조작하는 데 필요한 논리 보다 개발자가 조작하려고 개체를 중점으로 둡니다.
이러한 접근 방식은 복잡하고 잦은 업데이트 유지관리 되는 제조 및 설계를 위한 프로그램, 모바일 응용 프로그램에 매우 적합합니다.

※ 추가 이점 으로 코드 재사용성, 확장성, 효율성이 있습니다.



객체 지향 프로그래밍 구조

- 객체 :  식별 가능한 개체, 사물
             휴대폰처럼 만질수 있는 구체적인 사물일 수 있고 시간 처럼 추상적인 개념도 가능
             구별 가능한 식별자, 특징적인 행동, 변경 가능한 상태
             소프트웨어 안에서는 저장된 상태와 실행 가능한 코드를 통해 구현



- 클래스 : 개별 객체, 속성 및 메서드의 청사진 역할을 하는 사용자 정의 데이터 유형

- 메서드 : 객체의 동작을 설명한 클래스 내에 정의된 함수 입니다.
                클래스 정의에 포함된 각 메서느는 인스턴스 객체에 대한 참조로 시작합니다.
                객체에 포함된 서브루틴을 인스턴스 메서드라 합니다.
                프로그래머는 재사용이 가능하나 한 번에 하나의 객체에 캡슐화 된 기능을 유지하는 방법을 사용합니다.

- 속성 :    클래스 템플릿에 정의되며 객체의 상태를 나타냅니다.
               객체에는 속성 필드에 저장된 데이터가 있습니다.
               클래스 속성은 자체에 속합니다.

객체 지향 프로그래밍 주요 원칙

- 캡슐화 : 모든 중요 정보는 객체 안에 포함되있고 선택 정보만 노출
                각 객체의 구현과 상태는 정의된 클래스 내에서 비공개 유지관리
                다른 객체에서 클래스에 엑세스 권한, 변경 권한 불가
                단 공용 함수, 메서드 목록 호출 가능하나
                데이터 숨기기 특성은 프로그램 보안 강화 의도치 않은 데이터 손상 방지

- 추상화 : 클래스를 다른 클래스의 코드 재사용 가능
               개체 간의 관계와 하위 클래스 할당 가능하여 개발자는 고유한 계층 구조 유지 가능하여

               공통 논리를 재사용 가능
               이러한 속성은 보다 철저한 데이터 분석을 강제하고 개발 시간 단축 보다 높은 정확도 보장

- 다형성 :  하나의 객체가 여러 가지 형태를 가지는것
                 하나의 객체를 여러 개의 타입으로 보거나 하나의 타입을 여러 개의 객체로 해석 가능
                 다향성의 개념을 사용하는 방법으로 오버라이딩(Overriding)과 오버로딩(Overloading) 존재

- 오버라이딩(Overriding) : 부모 메서드로 부터 상속받은 자식 메서드는 부모와 동일한 이름,인자,반환 값이 존재
   이때 상속 받은 메서드를 자식객체에서 재정의하는것
- 오버로딩(Overloading) 같은 함수 이름을 가지고 있우너 매개변수, 리턴 타입 들의 특징은 다른 여러개의 서브프로그램 생성


- 상속 : 부모 클래스의 특성을 자식 클래스에 물려받는 것 자식 클래스에서는 더 필요한 속성을 확장하여 사용 가능
             자식 클래스는 상속받은 부모 클래스의 속성(변수), 기능(메소드,함수)를 사용가능
             메모리 관점에서는 자식 클래스의 인스턴스가 생성될때 상위 클래스의 인스턴스도 같이 생성

객체 지향의 기초의 5원칙
- SOLD
- 단일 책임 원칙(SRP) : 단 한 개의 기능을 가져한 한다는 원칙
                                       하나의 기능을 가지고 있으므로 클래스의 변경에도 한개가 존재
                                       코드의 가독성, 유지보수의 유리
                                       위배되는 경우 우지보수가 어렵고, 버그 가능 확륙 높음

- 개방 폐쇄 원칙(OCP) : 소프트웨어 개체(클래스,모듈,함수 등)은 확장에 열려있어야하고 수정에는

                                       닫혀있어야 한다는 원칙
                                       요구사항의 변경이나 추가가 있을 경우 구성 요소의 수정은 없고

                                       기존요소를 확장하여 재사용 가능하도록 설계하는것


- 리스코브 치환 원칙(LSP) : 부모 클래스와 자식 클래스 사이의 기능이 일관성이 있어햐 하는 의미
                                             일관성 의미는 부모 클래스로 동작하던 프로그램이 속성의 변경 없이

                                             자식클래스로  치환된경우 정상적으로 동작해야 하는 것

                                             상위 클래스는 공통 속성이나 추상화된 기능만을 가짐
  
- 인터페이스 분리 원칙(ISP) : 클래스가 미사용하는 인터페이스는 구현하지 않고 의존하지 않아야 하는 원칙
                                                클래스가 다른 클래스에 종속적인 경우 가능한 최소한의 인터페이스만 사용
                                                큰 단위의 인터페이스는 구체적, 작은 단위의 역할 인터페이스로 분리해서

                                                클래스에  필요한 메서드만을 사용 가능하도록 구성

   
- 의존 역전 원칙(DIP)  : 상위 레벨 모듈이 하위 레벨 모듈의 구현에 의존해서는 안 되며

                                      하위 레벨 모듈이 상위 레벨 모듈에서 
                                      정의한 추상 타입에 의존해야 하는것
                                      의존성 역전은 모듈 간의 직접적이고 의존을 끊고 상위 레벨모듈에서

                                     정의한 추상을 하위 레벨 모듈이 구현하게 하는 원칙 

                                      상위 레벨 모듈, 하위 레벨 모두 추상 클래스에 의존하여 변화에 쉽게 양향을 안받음

객체 지향 프로그래밍 이점

- 모듈화 : 캡슐화를 사용하면 객체를 자체 포함 가능하므로 문제 해결 및 공동 개발 용의

- 재사용 : 상속을 통한 코드 재사용 가능하여 프로젝트에 중복 코드 방지

- 생산력 : 프로그래머는 여러 라이브러리, 재사용 가능한 코드를 사용하여 새 프로그램의 개발 시간 단축

- 안전  : 캡슐화, 추상화를 사용하며 복잡한 코드가 숨겨짐
              소프트웨어 유지 관리가 용의 하며 인터넷 프로토콜이 보호 가능

 
- 융통성 : 다형성은 단일 함수가 배치되는 클래스에 적응 가능

 

728x90
반응형

'백수' 카테고리의 다른 글

java 기초 개념  (0) 2022.09.27
트랜잭션  (0) 2022.09.23
플랫폼 독립성  (0) 2022.09.20
인터프리터  (0) 2022.09.19
피들러(Fiddler)  (0) 2021.01.17