[정보처리기사] 객체지향 개념 및 객체지향 기법, 객체지향 설계 원칙(SOLID)

2022. 1. 20. 15:03·Computer Science/정보처리기사
728x90

 

1. 객체 지향 개념 : 실세계의 개체를 속성과 메서드가 결합한 형태의 객체로 표현하는 기법이다. 

2. 객체 지향 구성요소

클래스 (Class) - 객체 지향 프로그램에서 데이터를 추상화 하는 단위 
- 하나 이상의 유사한 객체들을 묶어서 하나의 공통된 특성을 표현
- 속성은 변수의 형태로 행위는 메서드 형태로 선언
객체 (Object) - 객체의 행위는 클래스에 정의된 행위에 대한 정의를 공유함으로써 메모리를 경제적으로 사용
- 객체마다 각각의 상태와 식별성을 가짐
메서드 (Method) - 클래스로부터 생성된 객체를 사용하는 방법
- 객체가 메시지를 받아 실행해야 할 객체의 구체적인 연산
- 전통적 시스템의 함수 또는 프로시저에 해당하는 연산 기능 
인스턴스 (Instance) - 객체지향 기법에서 클래스에 속한 각각의 객체 
- 실제로 메모리상에 할당 
속성 (Property) - 한 클래스 내에 속한 객체들이 가지고 있는 데이터 값들을 단위별로 정의 
- 성질, 분류, 식별, 수량, 현재 상태에 대한 표현 값 
메세지 (Message) - 객체 간 상호작용을 하기 위한 수단
- 메세지는 객체에서 객체로 전달됨

 

3. 객체 지향 기법 

캡슐화 (Encapsulation) - 서로 관련성이 많은 데이터와 이와 관련된 함수들을 한 묶음으로 처리하는 기법 
- 결합도가 낮아지고, 재사용이 용이 
- 인터페이스가 단순화 됨
- 정보은닉과 관계가 깊음
- 변경 발생 시 오류의 파급 효과가 적음 
상속성 (Inheritance) - 상위 클래스의 속성과 메소드를 하위 클래스에서 재정의 없이 물려받아 사용하는 기법
다형성 (Polymorphism) - 하나의 메세지에 대해 각 객체가 가지고 있는 고유한 방법으로 응답할 수 있는 능력 
- 오버로딩, 오버라이딩
오버로딩 : 매개 변수의 유형과 개수가 다르게 하여 같은 이름의 메소드를 여러개 가지는 기법
오버라이딩 : 상위클래스가 가지고 있는 메소드를 하위 클래스가 재정의해서 사용하는 기법 
추상화 (Abstraction) - 공통 성질을 추출하여 추상 클래스를 설정하는 기법
- 기능 추상화, 자료 추상화, 제어 추상화
정보 은닉
(Information Hiding)
- 코드 내부 데이터와 메소드를 숨기고 공개 인터페이스를 통해서만 접근이 가능하도록 하는 코드 보안 기술
- 고려되지 않은 영향들을 최소화하기 위하여 사용
관계성 
(Relationship)
- 두 개 이상의 엔티티 형에서 데이터를 참조하는 관계를 나타내는 기법
- 연관화, 분류화, 집단화, 일반화, 특수화 

 

4. 객체지향 설계 원칙 (SOLID)

단일 책임의 원칙 
(Single Responsible Principle)
하나의 클래스는 하나의 목적을 위해서 생성되며, 클래스가 제공하는 모든 서비스는 하나의 책임을 수행하는데 집중되어야 한다. 
개방 폐쇄 원칙
(Open Close Principle)
소프트웨어 구성요소( 컴포넌트, 클래스, 모듈, 함수 )는 확장에는 열려있고 변경에는 닫혀있어야 한다는 원칙 
리스코프 지환의 원칙 
(Liskov Substitution Principle)
서브타입은 어디서나 자신의 기반 타입으로 교체할 수 있어야 한다는 원칙
인터페이스 분리의 원칙 
(Interface Segregation Principle)
한 클래스는 자신이 사용하지 않는 인터페이스는 구현하지 않아야 한다. 
클라이언트가 사용하지 않는 인터페이스 때문에 영향을 받아서는 안된다. 
의존성 역전의 원칙 
(Dependency Inversion Principle)
실제 사용관계는 바뀌지 않으므로, 추상을 매개로 메세지를 주고받음으로써 관계를 최대한 느슨하게 만드는 원칙

 

5. 객체 지향 방법론 

종류 설명 특징
OOSE
(Object Oriented Software Engineering)
- Usecase에 의한 접근 방법으로, Usecase를 만든 모든 모델의 근간으로 활용 - 분석, 설계, 구현 단계로 구성
- 기능적 요구사항 중심의 시스템
OMT(Object Modeling Technology) - 객체지향 분석, 시스템 설계, 오브젝트 설계 및 구현의 4단계
- 객체모델링 -> 동적 모델링 -> 기능 모델링
* 객체 모델링 : 시스템의 정적 구조 표현
* 동적 모델링 : 객체의 제어 흐름/상호 반응 표현
* 기능 모델링 : 데이터 값의 변화 과정 표현
- 복잡한 대형 프로젝트에 유용
- 기업 업무의 모델링 편리 및 사용자와 의사소통 편리 
OOD(Object Oriented Design) 설계 부분만 존재 
설계 문서화를 강조하여 다이어그램 중심으로 개발하는 방법론
미시적 개발 프로세스와 거시적 개발 프로세스를 모두 사용하는 분헉 방법 
- 분석과 설계 분리 불가능 
- 분석하는데 이용된 객체 모델의 설계 시 적용

 

 

728x90

'Computer Science > 정보처리기사' 카테고리의 다른 글

비용산정 모델  (0) 2022.01.29
2 (5) 인터페이스 구현 검증 도구의 종류  (0) 2022.01.28
2.(4) 어플리케이션 테스트 관리  (0) 2022.01.27
[정보처리기사] 디자인 패턴의 의미와 종류  (0) 2022.01.20
[정보처리기사] 3. 데이터베이스 구축(2)- 데이터모델 절차란  (0) 2022.01.17
'Computer Science/정보처리기사' 카테고리의 다른 글
  • 2 (5) 인터페이스 구현 검증 도구의 종류
  • 2.(4) 어플리케이션 테스트 관리
  • [정보처리기사] 디자인 패턴의 의미와 종류
  • [정보처리기사] 3. 데이터베이스 구축(2)- 데이터모델 절차란
minjiwoo
minjiwoo
Data Engineering과 Cloud Native 기술에 대해 Dive Deep 하는 플랫폼 엔지니어가 되는 것을 목표로 하고 있습니다. 경험과 공부한 내용을 기록하며 지속가능한 엔지니어가 되는 것이 꿈입니다.
minji's engineering noteData Engineering과 Cloud Native 기술에 대해 Dive Deep 하는 플랫폼 엔지니어가 되는 것을 목표로 하고 있습니다. 경험과 공부한 내용을 기록하며 지속가능한 엔지니어가 되는 것이 꿈입니다.
minjiwoo
minji's engineering note
minjiwoo
전체
오늘
어제
  • 분류 전체보기 (613)
    • Data Engineering (42)
      • Apache Spark (11)
      • Databricks & Delta Lake (9)
      • Airflow (3)
      • SQL (6)
      • Trouble Shooting (2)
      • Hadoop (2)
      • MLOps (1)
    • Cloud Engineering (104)
      • AWS (23)
      • Linux 🐧 (29)
      • Docker 🐳 (21)
      • Kubernetes ⚙️ (20)
      • Ansible (10)
    • Computer Science (87)
      • 네트워크 (9)
      • 운영체제 (25)
      • 정보처리기사 (48)
      • CS 기술 면접 스터디 (3)
    • Programming Languages (27)
      • Python (17)
      • C와 C++ (10)
    • Backend (5)
      • Django (2)
    • 프로젝트 (2)
      • 테크포임팩트 (2)
    • iOS (11)
      • 레이블러리 (2)
    • Algorithm (PS) (275)
      • LeetCode (6)
    • 개발일기 (30)
      • 내돈내산 후기🎮 (3)
      • 개발자 취준생 (5)
      • Today I Learned (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • Hi there

인기 글

태그

  • linux
  • Databricks
  • docker
  • Swift
  • 데이터브릭스
  • 빅데이터
  • 코딩테스트
  • 데이터엔지니어
  • 알고리즘
  • 데이터엔지니어링
  • 리눅스
  • dfs
  • 쿠버네티스
  • python
  • Kubernetes
  • 카카오코딩테스트
  • BFS
  • 스파크
  • SPARK
  • AWS
  • EC2
  • 백준
  • ansible
  • 파이썬
  • 클라우드
  • dp
  • Leetcode
  • 백트래킹
  • 프로그래머스
  • 운영체제

최근 댓글

최근 글

hELLO· Designed By정상우.v4.5.2
minjiwoo
[정보처리기사] 객체지향 개념 및 객체지향 기법, 객체지향 설계 원칙(SOLID)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.