익명 사용자
로그인하지 않음
토론
기여
계정 만들기
로그인
IT 위키
검색
객체지향 설계 원칙
편집하기
IT 위키
이름공간
문서
토론
더 보기
더 보기
문서 행위
읽기
편집
원본 편집
역사
경고:
로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다.
로그인
하거나
계정을 생성하면
편집자가 사용자 이름으로 기록되고, 다른 장점도 있습니다.
스팸 방지 검사입니다. 이것을 입력하지
마세요
!
고급
특수 문자
도움말
문단 제목
2단계
3단계
4단계
5단계
형식
넣기
라틴 문자
확장 라틴 문자
IPA 문자
기호
그리스 문자
그리스어 확장
키릴 문자
아랍 문자
아랍어 확장
히브리 문자
뱅골어
타밀어
텔루구어 문자
싱할라 문자
데바나가리어
구자라트 문자
태국어
라오어
크메르어
캐나다 원주민 언어
룬 문자
Á
á
À
à
Â
â
Ä
ä
Ã
ã
Ǎ
ǎ
Ā
ā
Ă
ă
Ą
ą
Å
å
Ć
ć
Ĉ
ĉ
Ç
ç
Č
č
Ċ
ċ
Đ
đ
Ď
ď
É
é
È
è
Ê
ê
Ë
ë
Ě
ě
Ē
ē
Ĕ
ĕ
Ė
ė
Ę
ę
Ĝ
ĝ
Ģ
ģ
Ğ
ğ
Ġ
ġ
Ĥ
ĥ
Ħ
ħ
Í
í
Ì
ì
Î
î
Ï
ï
Ĩ
ĩ
Ǐ
ǐ
Ī
ī
Ĭ
ĭ
İ
ı
Į
į
Ĵ
ĵ
Ķ
ķ
Ĺ
ĺ
Ļ
ļ
Ľ
ľ
Ł
ł
Ń
ń
Ñ
ñ
Ņ
ņ
Ň
ň
Ó
ó
Ò
ò
Ô
ô
Ö
ö
Õ
õ
Ǒ
ǒ
Ō
ō
Ŏ
ŏ
Ǫ
ǫ
Ő
ő
Ŕ
ŕ
Ŗ
ŗ
Ř
ř
Ś
ś
Ŝ
ŝ
Ş
ş
Š
š
Ș
ș
Ț
ț
Ť
ť
Ú
ú
Ù
ù
Û
û
Ü
ü
Ũ
ũ
Ů
ů
Ǔ
ǔ
Ū
ū
ǖ
ǘ
ǚ
ǜ
Ŭ
ŭ
Ų
ų
Ű
ű
Ŵ
ŵ
Ý
ý
Ŷ
ŷ
Ÿ
ÿ
Ȳ
ȳ
Ź
ź
Ž
ž
Ż
ż
Æ
æ
Ǣ
ǣ
Ø
ø
Œ
œ
ß
Ð
ð
Þ
þ
Ə
ə
서식 지정
링크
문단 제목
목록
파일
각주
토론
설명
입력하는 내용
문서에 나오는 결과
기울임꼴
''기울인 글씨''
기울인 글씨
굵게
'''굵은 글씨'''
굵은 글씨
굵고 기울인 글씨
'''''굵고 기울인 글씨'''''
굵고 기울인 글씨
* 상위 문서: [[객체지향 설계]] ;객체지향 설계 시 지켜져야 하는 설계 원칙 5가지를 말하며, 줄여서 SOLID라고 부른다. ===단일 책임 원칙=== ;Single Responsiblity Principle; SRP *소프트웨어의 컴포넌트는 단 하나의 책임만을 가져야 한다. ====예시==== ;AS-IS *복합기 Class **copy() **scan() ;TO-BE *복사기 Class { copy() } *스캐너 Class { scan() } ===개방 폐쇄 원칙=== ;Open Close Principles; OCP *확장에 대해선 열려 있어야 하고 수정에 대해선 닫혀 있어야 한다. *기존의 코드를 변경하지 않고(Closed) 기능을 수정하거나 추가할 수 있도록(Open) 해야 한다. ====예시==== *Class Car { drive() } *확장은 허용'''(O)''': Class SUV() extends Car **override drive(); **new method stop(); *변경엔 폐쇄'''(X)''': Class Plane extends Car **change drive() to fly(); ===리츠코프 치환 원칙=== ;Liskov Substitution Principle; LSP *자식 클래스는 부모클래스에서 가능한 행위를 수행할 수 있어야 한다. ====예시==== *Class SUV extends Class CAR { run() } *SUV suv = new SUV(); *CAR car = (CAR)suv; *car.run(); ===[[인터페이스 분리의 원칙]]=== ;Interface Segregation Principle; ISP *자신이 사용하지 않는 메서드는 구현하지 않도록 해야 한다. **이런 경우 인터페이스는 쪼개져야 한다. *하나의 일반적인 인터페이스 보단 여러 개의 구체적인 인터페이스가 낫다. ====예시==== ;AS-IS *Interface 이동체 **drive(); **fly(); **sail(); **stop(); ;TO-BE *Interface 자동차 { drive(); stop(); } *Interface 비행기 { fly(); stop(); } *Interface 배 { sail(); stop(); } ===[[의존관계 역전 원칙]]=== ;Dependency Inversion Principle; DIP *의존 관계를 맺을 때, 변화하기 쉬운것 보단 변화하기 어려운 것에 의존해야 한다. *고차원의 모듈은 저차원의 모듈에 의존하면 안된다. 이 두 모듈 모두 다른 추상화된 것에 의존 해야 한다. *DIP를 만족한다는 것은 의존관계를 맺을 때, 구체적인 클래스보다 인터페이스나 추상 클래스와 관계를 맺는다는 것을 의미 ====예시==== ;아래와 같이 하면 Car 클래스는 '겨울 타이어'라는 하위 클래스에 의존성을 가지게 된다. (의존성 역전) *Class Car { **WinterTire wt = new WinterTire(); **setTireModel(String model) { ***wt.model = model; **} *} ;아래와 같이 하면 타이어에 대한 의존성이 줄어든다. *Class Car { **Tire wt = null; **setTire(Tire t) { ***wt = t; **} *}
요약:
IT 위키에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 라이선스로 배포된다는 점을 유의해 주세요(자세한 내용에 대해서는
IT 위키:저작권
문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다.
저작권이 있는 내용을 허가 없이 저장하지 마세요!
취소
편집 도움말
(새 창에서 열림)
둘러보기
둘러보기
대문
최근 바뀜
광고
위키 도구
위키 도구
특수 문서 목록
문서 도구
문서 도구
사용자 문서 도구
더 보기
여기를 가리키는 문서
가리키는 글의 최근 바뀜
문서 정보
문서 기록