강제성 2

자바 22강. 인터페이스

모니터 암을 만드는 회사는 모니터 베사홀의 크기 규격을 맞춰 만들어야 한다. 이게 인터페이스이다. 인터페이스는 프로토콜과 비교된다. 프로토콜이 합의하에 만들어지는 수평적인 약속이라면, 인터페이스에는 갑과 을의 관계가 나누어져 갑이 정한 규칙을 을에게 강제로 알려주는 수직적인 약속이다. 모니터를 만드는 업체가 모니터 암을 만드는 업체에게 강제성을 부여한 것이다. 그렇다면 인터페이스를 행위에 대한 강제성 때문에 사용할까? 그건 추상 클래스를 통해서도 가능하다. 추상화를 사용한 프로그램을 살펴보자. 자동차 설계도를 보면 모든 자동차는 바퀴 4개, 엑셀 1개, 브레이크 1개를 가지고 있고, 그리고 모든 자동차는 전진, 후진, 멈춤의 행위만 한다. 바퀴 4개, 엑셀 1개, 브레이크 1개는 공통적인 것이기 때문에 ..

JAVA 2022.01.18

자바 18강. abstract

신입이 실수하지 않는 코드를 짜는 방법을 알아보자. 스타크래프트 게임을 만든다고 하고, 프로토스가 공격하는 코드를 짤 것이다. 신입에게 새로운 유닛을 만드는 일을 주기 위해 팀장이 코드를 짜줄 것이다. 새로운 유닛을 만들 때 메서드의 이름을 틀릴 수도 있고, 빠트리는 메서드가 있을 수도 있다. 이때는 실수한 신입의 잘못이 아니다. 메서드의 실수가 있어도 오류가 나지 않게 틀을 만들어준 팀장의 잘못이다!! 이를 방지하기 위해 abstract 추상 클래스를 사용할 것이다. 객체의 행위를 공통적으로 정의할 수 없을 때 사용하는 것이다. 클래스명 앞에 abstract를 붙이면 몸체(클래스 중괄호 내부)가 필요 없게 된다. 구체적인 행위는 자식마다 다 다르니까 구체적인 자식에게 구체적인 행위를 맡기는 것이다.(위..

JAVA 2022.01.17