23/12/15
오늘은 과제를 완벽히 끝내진 못했지만 코틀린의 전반적인 특징을 튜터님의 특강을 통해 다시 한번 복습했다
절차지향과 객체지향에 개념에 대해 어렴풋 알고있었지만 내가 하던 코딩은 주먹구구식이라는걸 다시 한번 깨달았다
객체지향적인 관점? 으로 코딩을 해야 관리가 편하다는걸 이해했고 단일책임원칙을 준수하면서 클래스를 나누는 기준을 둬야 한다는 말이 이해가 되었다
붕어빵의 예시를 들어보니 이해가 쉬웠는데
붕어빵 - 인스턴스(클래스로 부터 만들어진 객체
붕어빵틀 - 클래스
붕어빵을 조리한다 - 인스턴스화
클래스가 차지하는 메모리와 인스턴스가 차지하는 메모리가 다르다는것도 배웠다 추가적으로 공부가 필요해 보임
클래스 상속
예시로 차가 부모 클래스이고 자식클래스는 소나타 지프 등등 공통된 부분을 부모로 둔다는것을 이해했다
클래스의 장점을 앞서 공부했지만 단점도 있는데
단점 - 강한결합강제 / 복잡한 구조(내가 여기서 헤멤) / 하위클래스의 동작을 100% 확신불가
하지만 코드 재사용성 유지보수 측면에서 안쓸수는 없고 프로그래밍을 한다는 입장에서 계층적인 구조를 만들어 준다는것이 꼭 써야하는 이유로 와닿았다
추상클래스
미완성인 설계도로 추상메서드를 가지고 있고 다른클래스의 작성을 돕는 역할이다 상속을 통해 메서드를 완성해야 인스턴스가 생성된다 꼭 필요하지만 자손마다 다르게 구현될것을 예상되는경우 사용한다
예시 - 계산기의 연산 추상클래스
더하기"연산" / 나누기 "연산" 등등
오퍼레이션 의 매개변수만 표기되어있는 추상 클래스를 더하기 클래스에 가져와서 사용한다
계산기 최상위 추상클래스를 연산마다 가져와서 사용
상속은 이미 존재하는 클래스의 기능을 확장 수정 하는것
추상화는 복잡한 시스템을 간단하게 표현하는것에 초점을 맞추는것
인터페이스는
두 대상(객체) 간의 연결 대화 소통을 돕는 중간 역할이고 구현된것이 없는 설계도의 껍데기이다 모든 멤버가 public 이다
사용하는 이유로는 결합도 (low coupling) 응집도 (high cohesion) 를 위함인데 공부가 더 필요해 보인다
디버깅
내가 디버그 하고 싶은 코드에 중단점을 찍고 디버깅을 실행하면 그 코드에 동작 값이나 로직이 뜬다
여태 다른 방식으로 (js - console.log) 해왔기 때문에 일부러 코드를 이상하게 짜서 역순으로 디버그 해봐야겠다
밤을 새워 코딩을 했지만 이해가 어려워 완벽히 문제를 풀지 못해 오늘도 좀 서러운 하루지만 한주동안 고생했고 주말에 다시 한번 복습을 하면 다음번에는 같은 실수를 하지 않을거 같으니 오늘도 고생했고 앞으로도 꾸준히 해나가자 ,,
화이팅 !