객체지향 프로그래밍할 때 기억하기
시작하기
코드스쿼드에 들어와서 프로그래밍을 하고 피드백 받는 과정에서 그동안 어렴풋한 개념으로 알고 있었던 것들을 확실하게 알게됨 그 내용들을 두고두고 참고하기위해서 정리를 시작함 많은 내용이 있지만 먼저 정리한 것부터 조금씩 조금씩 글을 쓸 예정
객체 간의 요청 - 응답으로 프로그램이 완성시키기
// CoordinateMain.java
List<Point> points = Input.getPoints("좌표를 입력해주세요.");
Figure triangle = new Triangle(points);
Viewer.viewAtCoordinate(triangle);
- 객체에 역할을 할당했다면, 역할에 해당하는 일을 싸그리 맡기기
- 역할을 맡은 객체가 어떻게 처리하는지는 중요하지않고, 응답 결과만 얻어오면됨
보기 좋은 코드 만들기
for (int i = 0; i < points.length; i++) {
for(int j = 0; j < points[i].length; j++) {
if(points[i][j]) {
}
}
}
- for 문이 중첩되어있는 코드를 짜놓으면 편하다, 그렇지만 이후 유지보수나 다른 개발자가 코드를 봤을 때 가독성이 떨어진다(depth 증가)
- 아래처럼 객체화하면 이중 배열로 복잡하게 생각하지않아도되고, 메소드로 정의할 수 있으므로 가독성을 높일 수 있음. 또한 역할 위임이 이뤄지기때문에 코드 관리도 편함
// Coordinate.java
private List<Line> points = new ArrayList<>();
public boolean isDrawPosition(int position) {
Point searchPoint = points.get(position);
return searchPoint.isDrawPosition();
}
public boolean isMaxPosition(int position) {
int lastPosition = points.size() - 1;
return position == lastPosition;
}
// Point.java
private int position;
private boolean isDraw;
public boolean isDrawPosition() {
return isDraw;
}
상태값에 대한 get메소드로 상태값을 받아와서 가공하려하지말고 일하게 만들자
List<Car> cars = getCars();
List<Car> arrivedCar = new ArrayList<>();
- 위의 코드로 짜면 다른 곳(객체)에서 상태값을 그대로 받아와서 다른 곳에서 판단하는 꼴
- 아래 코드처럼 바꿀 수 있음 : 판단은 거기서, 만드는건 만드는 역할을 맡은 곳에서
// Controller.java
List<Car> arrivedCars = cars.getArrivedCars(10);
// Cars
List<Car> cars = new ArrayList<>();
public List<Car> getArrivedCars(int arrivePosition) {
}
public boolean isArrived(int arrivePosition) {
}
가장 중요한건….
- 자바는 객체지향 프로그래밍이다.