객체지향 Flashcards

1
Q

객체지향

A

[정의] 실 세계의 개체(Entity)를 속성(Attribute)와 메소드(Method)가 결합된 객체형태로 표현 개념
[구성요소] 객체(Object), 클래스(Class), 인스턴스(Instance), 메서드(Method), 메시지(Message)
[객체특성] (캡추다정상) 캡슐화,추상화,다형성,정보은닉,상속성

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

캡슐화/정보은닉

A

[정의] 코드 내부 데이터와 메서드를 숨기고 공개 인터페이스를 통해 서만 접근이 가능하도록 하는 코드 보안 기술
[특징] 객체(속성+메서드), 메시지, 독립성
[목적] 정보의 손상과 오용방지, 독립성 유지, 이식성과 호환성 확보
[장점] 재사용성 증가, 정보은닉 일관성, 응집도 향상
[방법] 접근제한자(Private,Default,Prodected,Public)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

추상화

A

[정의] 공통성질 추출=클래스, 메서드/데이터타입/제어문 구성
[특징] abstract, 낮은 결합도
[사례] 영희 아빠, 철수 아빠 → 아빠 (추상화 반대는 객체화)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

다형성

A

[정의] 재정의하거나 하나의 클래스에 동일 이름 메소드를 다중 정의하여 확장성, 유연성을 제공하는 객체지향 특징
[방법]
- 오버라이딩(Overriding) : 하위 클래스에서 상위 클래스의 메소드를 재정의
- 오버로딩(Overloading) : 클래스내에서 동일명의 메소드를 매개변수나 타입을 변경하여 재정

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

상속성

A

[정의] 부모 클래스의 속성과 함수를 하위 클래스가 물려 받는 객체지향 특성
[특징] 재사용성(상위 클래스 재사용), 확장성
[종류] 단일(수퍼-서브 1:1), 다중(1:N), 반복(1:N:1)
- 단일 : extends, 다중 : implements

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

SOLID 원칙

A

[리드] 재사용성 극대화 Class Design
[정의] 객체지향 방법론의 개발, 유지보수성 향상 및 Loosely Coupled한 모듈 설계관점 기본 원칙
[원칙] SRP, OCP, LSP, ISP, DIP
[필요성] 유지보수성 향상(높은 응집도, 낮은 결합도), 생성성/품질 향상(유연성, 확장성 설계 기반)
* 객체지향 설계 원칙을 적용하여 유지보수성을 저해시키는 설계 구조 경직성 해결

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

SRP

A

[정의] 하나의 클랙스는 하나의 책임만 가지는 특성
[특징] 단일객체, 단일책임, 높은 응집도
[사례]
- Car(start(), stop(), getO()), 운전자(drive()), 세차장(wash()), 정비소(changeTie())
- 데이터 매핑(DAO), 고객DAO/상품DAO

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

OCP

A

[정의] 소프트웨어 개체(클래스, 모듈, 함수)는 확장에는 열려 있으나 변경에는 닫혀 있어야 하는 특성
* 쉬운 확장 어려운 변경
[특징] 확장성 보장(개방), 변경제어(폐쇄)
[사례]
- Base(+method1()) ◁– Derived1(+method1()) / Derived2(+method1())
- JDBC IF <- 오라클 드라이버 / MySQL 드라이버 / MSSQL 드라이버

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

LSP

A

[정의] 서브타입은 언제나 자신의 기반타입(Base Type)으로 교체할 수 있어야 하는 특성
[특징] is-a관계, 자식은 부모대체 가능
[사례]
- Figure ◁– Rectangle / Square
- List<String> list = new ArrayList<>();</String>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

ISP

A

[정의] 빈번히 사용되는 메소드는 분리하여 인터페이스로 구현
[특징] 하나의 일반적인 인터페이스보다 구체적인 여러 인터페이스가 나음
[사례]
- ClassA —> «Interface A»/ ClassB —> «Interface B»
- 파일 입력은 Input I/F, 파일 출력은 Output I/F

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

DIP

A

[정의] 클라이언트는 구체 클래스가 아닌 인터페이스나 추상 클래스에 의존해야하는 특성
[특징]
- Client A -> Server <- Client B : 의존성 방향 Client→ Server, Server 변경시 Client 영향
- Client A -> Client I/F <- Client B, Clinet I/F <- Server : 의존성 방향 역전, Server 변경시 Client 영향 없음
[사례]
- 이벤트 드리븐, 콜백, JMS, 통신 프로그래밍 모델

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

의존성 주입

A

[리드] Spring 프레임워크 핵심 기능
[정의] 의존 객체를 직접 내부에서 생성없이 외부에서 주입하여 객체간 의존성을 컨테이너가 자동을 연결해주는 방식
[유형] Setter, 생성자, Method
[장점] 개발 생상성, 구조 재사용성, Loosely Coupling, 단위 테스트 용이, 가독성, 변경 용이성

How well did you know this?
1
Not at all
2
3
4
5
Perfectly