본문 바로가기

JAVA39

JAVA 실습 8. 객체 지향, 제네릭과 컬렉션을 이용한 커피숍 만들기. 커피숍의 로테이션을 생각해보자. 손님이 와서 메뉴판을 본다. 메뉴판을 보고 손님이 주문을 한다. 주문을 하면 바리스타가 주문을 받고, 커피를 생성한다 객체지향적으로 보면 손님은 주문을 할 의무가 있고, 메뉴판은 메뉴를 선택해야할 의무가 있고, 바리스타는 커피를 만들어야 할 의무가 있다. 전체적인 흐름을 보자. public class CoffeeApp { public static void main(String[] args) { //메뉴 바리스타 손님 Consumer consumer=new Consumer(); Barista barista=new Barista(); MenuItem m1=new MenuItem("아메리카노",1500); MenuItem m2=new MenuItem("카페라떼",2500); M.. 2020. 4. 3.
Warpper 클래스와 제네릭 기초 알수 없는 변수를 받을 때 앞에서는 Object 클래스를 쓴다고 했는데, Object 클래스를 받을 때 주의 사항이 있다. 바로, 변수를 받는 건 좋지만 호출할때 실재하는 자료형으로 다운캐스팅 해주어야 한다는 단점이다. 이를 보다 간단하게 받는 방법이 제네릭이다. 제네릭은 간단하다. class Data{ T value; } public static void main(String[] args) { Datadata=new Data(); data.value="문자열"; System.out.println(data.value); 위의 클래스에서는 자료형을 선언하지 않았음에도 main 함수 내에서 클래스를 호출할때, 마찬가지로 (꺽쇠)를 열어 선언하고 있다. 제네릭을 짤 때 주의할 점이, 꺽쇠에 들어갈 변수와 선언.. 2020. 4. 3.
12. 컴포지션 자바의 단점은 다중상속이 안된다는 점이다. 또한 상속은 다형성과 재사용이 함께 있어야 한다. 다중상속을 해야하는 경우나, 다형성과 재사용이 동시에 충족되지 않으면 컴포지션을 사용해야한다. 컴포지션의 예를 햄버거 가게로 예를 들어보자. 가장 기본적인 버거를 보자. @Data //Getter, Setter 추가 public class Burger { private int price; private String desc; public Burger() { this(1500,"기본 버거"); } // 최종목적지 public Burger(int price, String desc) { this.price = price; this.desc = desc; System.out.println(desc+"가 만들어졌습니다.".. 2020. 4. 3.
11. 인터페이스 추상 클래스와 함께 등장하는 것이 인터페이스이다. 추상 클래스는 자식 클래스를 만들고, 여기서 규칙을 찾아 추상화 하지만 인터페이스는 선으로 규칙을 만들고 자식 클래스를 만든다. 인터페이스와 프로토콜은 약속이라는 점에서 비슷하지만 다른 역할을 한다. 프로토콜은 협약에 가깝지만 인터페이스는 클래스와 클래스 내에 추상 클래스를 통해 강제성을 부여하기 때문이다. 이러한 성격으로 인해 인터페이스는 규칙을 설정한다고 생각해도 무방하다. 인터페이스의 역할은 두 가지이다. 1. 개발자는 규칙이 설정된 상태로 개발을 하기 때문에 개발이 편리하다. 2. 사용자는 보이는 인터페이스대로만 조작하면 되기 때문에 사용이 용이하다. 인터페이스의 특징은 다음과 같다. 1. 인터페이스 내에 변수가 선언된 경우 앞에 public st.. 2020. 3. 31.
반응형