반응형
Advanced OOP-0-Introduction
소프트웨어 왜 문제인가?
- 소프트웨어 위기
- 위기의 원인?
- 소프트웨어 개발 프로세스의 복잡성
- 소프트웨어 공학의 미성숙
- 소프트웨어 규모가 커짐
소프트웨어의 품질
- 품질 문제는 정해진 시간에, 정해진 노력으로, 정해진 요구사항을 해결하지 못함
- 소프트웨어는 보이지 않기 때문에 품질 판단이 더욱 어려움
소프트웨어의 심각성
- 소프트웨어가 대형화되면서 더욱 위기가 심각해짐
- 소프트웨어 대형화로 인한 문제
- 협업의 문제 : 설계의 중요성
- 요구사항의 문제 : 요구사항은 계속해서 늘어남
소프트웨어 심각성
- 소프트웨어 오류의 심각성
- 눈에 보이지 않아서 오류의 심각성을 중요치않게 생각함
- SW 오류로 생명의 손실 발생 가능 ex:) 자율주행사고
- 경제 손실 발생 가능
좋은 SW란?
- 좋은 SW는 사람 중심.
: 기능성, 효율성, 유지보수성, 재사용성, 가독성 등이 중요
객체지향 프로그래밍
- SW위기를 해결하는 방안으로 패러다임이 변화
- 객체 지향의 특징을 이해해야함
- 비객체지향과 비교해서 무엇이 다른지
- 공통 부분을 재사용하는 방법으로 상속을 이해해야 함
객체지향 프로그래밍이란?
- 프로그래밍 하는 스타일 중 한가지
- 절차적 프로그래밍의 문제점을 개선한 프로그래밍 방법
절차 중심 프로그래밍 방법의 문제점
- 객체 지향 프로그래밍은 절차 중심 프로그래밍 방법
- 절차 중심 프로그래밍의 문제
- 절차와 데이터가 분리되어 있음.
-
OOP에서는 클래스를 이용해서 데이터와 절차를 묶어서 한 개의 자료형으로 취급할 수 있음
클래스와 객체
- OOP에서 코드는 객체로 구성
- 클래스
- 객체의 속성과 함수를 정의
- 객체의 속성과 기능을 설명하는 자료
- 제품의 설계도 또는 템플릿에 해당
- 객체 또는 인스턴스
- 클래스로부터 만들어지는 실체
- 설계도로부터 생성된 제품
OOP의 특성
- 추상화
- 복잡한 사물로부터 핵심적인 속성 또는 기능들을 추출하는 작업
- 캡슐화(은닉)
- 데이터와 함수들을 클래스 내에 담고 사용자가 사용할 수 있는 부분만 보이도록 하고 나머지는 내부에 감추는 것
- 내부코드와 데이터를 보호
- 인터페이스만 보여줌으로써 쉽게 사용할 수 있게 함
- 상속
- 다형성
접근자(getter)와 설정자(setter) 메소드
- 접근자
- 주로 멤버 변수의 값을 반환하는 용도로 사용
- ex : getAge(0
- 설정자
- 멤버 변수의 값을 수정하는 용도로 사용
- 새로운 값을 인자로 전달 받음
- ex : setAge(30)
UML 클래스 다이어그램
- 세 개 영역 : 클래스 이름, 멤버 변수, 멤버 함수로 나누어 표기
- 클래스 다이어그램간의 관계
- Assosiation 연관
- 두 개의 클래스가 참조 관계에 놓여 있음
- Aggregation 집합
- A가 B를 포함하고 있을 때, B가 A없이도 존재할 수 있다면 집합 관계
- Composition 합성
- A가 B를 포함하고 있을 때, B가 A없이 존재할 수 없다면 합성 관계
시퀀스 다이어그램
상속
- Parent -> Child : 특수화 과정
- Child -> Parent : 일반화 과정
- 자식 객체는 부모 변수에 저장 가능하나, 반대는 불가
반응형
'Computer Science > 디자인패턴' 카테고리의 다른 글
[Head First Design Patterns] 04 팩토리 패턴 (0) | 2020.10.20 |
---|---|
[Head First Design Patterns] 01 디자인 패턴 소개 (0) | 2020.10.18 |
[Head First Design Patterns] 03 데코레이터 패턴 (0) | 2020.10.07 |
[Head First Design Patterns] 02 옵저버 패턴 (0) | 2020.09.25 |
SOLID 원칙 (0) | 2020.09.12 |