항해 3주차가 끝났다. 이번 주에는 자바 객체지향을 위주로 배웠다.
우리가 실생활에서 쓰는 모든 것들을 하나의 객체로 바라본다. 프로그램 구현에 필요한 객체를 파악하고 그 객체들의 역할이 뭔지, 각각의 객체는 어떤 책임을 져야하는(어떤 기능을 수행하는) 객체인지를 파악한다. 그리고 그런 객체들 간의 상호작용을 통해 프로그램을 만드는 것을 객체지향 프로그래밍이라고 한다.
클래스는 객체를 만들기 위한 하나의 설계도이다.
객체는 설계도에 따라 태어난 실체이다. 객체를 클래스의 인스턴스라고도 한다.
절차지향은 프로그램을 기능중심으로 바라보며 어느 기능을 어떤 순서로 처리하는가에 초점을 맞춘다.
반면에, 객체지향은 객체중심이며 누가 어떤 일을 할 것인가에 초점을 둔다.
대형 프로그래밍의 경우 많은 기능을 수반하기에 객체지향이 적합하고 소형 프로그래밍의 경우 절차지향이 적합하다.
객체들의 고통적인 특징(기능, 속성)을 모아서 한데 묶는 것
객체지향적인 관점에서는 클래스를 정의하는 것도 추상화라고 할 수 있다.(자바스크립트 같은 클래스가 없는 객체지향언어도 존재하기 때문)
실제로 구현되는 부분을 외부에 드러나지 않도록 정보를 은닉하는 것.
객체가 독립적으로 역할을 할 수 있도록 데이터와 기능을 하나로 묶어 관리한다.
외부와 상호작용을 할 때에는 메소드를 이용하여 한다.
하나의 클래스가 가진 특징(함수, 데이터)을 다른 클래스가 그대로 물려받는 것
기존 코드를 재활용해서 사용함으로써 객체지향의 중요한 기능 중 하나에 속한다.
약간 다른 방법으로 동작하는 함수를 동일한 이름으로 호출하는 것
동일한 명령의 해석을 연결된 객체에 의존하는 것(파라미터를 상위 클래스 타입으로 받는다)
JVM은 자바 프로그래밍이 실행되는 가상머신이다.