객체지향의 4대 특성
- 캡슐화 : 정보의 은닉
=> 세부사항을 감추는 것, 변경하기 쉬운 객체를 만들기 위해 사용, 객체 내부 접근 제한(유연한 설계 가능) - 상속 : 재사용
=> 코드 중복제거로 재사용성 증가, 클래스 간의 체계화 된 구조파악, 상위 클래스만 수정하므로써 일관성 유지 - 추상화 : 모델링
=> 공통 부분을 모아 상위 개념으로 새로 선언, 공통적이고 중요한 것만 모델링, 외부노출 된 인터페이스만 사용 - 다형성 : 사용의 편의
=> 객체가 가지고 있는 고유의 특성에 따라 다른 여러가지 형태로 재구성 (오버로딩, 오버라이딩을 생각해라!)
객체지향의 설계 5원칙
- 단일 책임의 원칙 (SRP - Singe Responsibility Principle)
=> 단 하나의 책임을 갖는 객체 : 역할과 책임을 클래스로 분리하여 연관있는 클래스와 각각 따로 관계를 맺어 영향력↓ - 개방 폐쇄 원칙 (OCP - Open-Close Principle)
=> 자신의 확장에는 열려있고, 변화에는 닫혀 있어야한다. - 리스코프 치환의 원칙 (LSP - Liskov Substitution Principle)
=> 하위 클래스 인스턴스는 상위형 객체 참조변수에 대입해 상위 클래스의 인스턴스 역할을 하는데 문제 없어야 한다. - 인터페이스 분리의 원칙 (ISP - Interface Segregation Principle)
=> 특정 클라이언트를 위한 인터페이스 여러개가 범용 인터페이스 하나보다 낫다.
=> 클라이언트가 필요하지 않는 기능을 가진 인터페이스에 의존해서는 안되고 최대한 인터페이스를 작게 유지해라 - 의존성 역전 원칙 (DIP - Dependency Inversion Principle)
=> 고차원 모듈은 저차원 모듈에 의존하면 안된다. 이 두 모듈 모두 다른 추상화 된 것에 의존해야 한다.
=> 추상화 된 것은 구체적인 것에 의존하면 안된다. 구체적인 것이 추상화 된 것에 의존해야 한다.
=> 자주 변경되는 구체 (concrete) 클래스에 의존하지 마라!
코테풀이
if (a > b) {
for (int i = b; i <= a; i++) {
answer += i;
}
} else if (a == b) {
answer = a;
} else if (a < b) {
for (int i = a; i <= b; i++) {
answer += i;
}
}
=====================================
for (int i = Math.min(a,b); i <= Math.max(a,b); i++)
answer += i;
int answer = 0;
answer = Integer.parseInt(s);
return answer;
// 최대한 간결하게해라!
// 당장에 3줄과 1줄의 결과는 똑같지만
// 1000개의 data를 받으면
// 3000줄과 1000줄이 된다!
====================================
return Integer.parseInt(s);
class AddOperation {
//속성(멤버변수)
String operator;
//기능(메서드)
answer = firstNumber + secondNumber;
}
// 보기만해도 알아야한다 진짜... 모르면... 하아...
728x90
'ssung_항해일지 > 항해99_프로그래밍 기초(알고리즘)' 카테고리의 다른 글
알고리즘 - 5일차 (1) | 2023.02.02 |
---|---|
알고리즘 - 4일차 (모의고사 Review) (1) | 2023.02.01 |
알고리즘 - 3일차 (0) | 2023.01.31 |
알고리즘 : 개인보충학습 (0) | 2023.01.30 |
알고리즘 - 2일차 (23.01.28) (0) | 2023.01.30 |