분류 전체보기
-
Java Study [2022-08-17] - 객체지향프로그래밍(템플릿 메서드 예제2)백엔드 2022. 8. 18. 19:53
📌 Java Study 🔸 2022-08-17 수요일 [추상 클래스 응용] 1. 코딩해보기 예제 : 자동차 주행 과정 구현하기 Car 추상 클래스를 상속받는 Sonata, Avante, Grandeur, Genesis 클래스가 있다. 각 차는 주행하기 위해 다음 메서드의 순서로 움직임 run() { start(); drive(); stop(); turnoff(); } run() 메서드를 템플릿 메서드로 구현하고, CarTest 클래스를 참고하여 프로그램을 완성 Car 클래스 public abstract class Car { public abstract void start(); public abstract void drive(); public abstract void stop(); public abstra..
-
Java Study [2022-08-16] - 객체지향프로그래밍(템플릿 메서드 예제)백엔드 2022. 8. 17. 23:30
📌 Java Study 🔸 2022-08-16 화요일 [추상 클래스 응용] 1. 템플릿 메서드 활용하기 예제 : Player 가 있고, 이 Player가 게임을 합니다. 게임에서 Player가 가지는 레벨에 따라 run(), jump(), turn() 세가지 기능을 할 수 있습니다. 각 레벨에 따라 기능 가능 여부가 다음과 같습니다. 초보자 레벨 : 천천히 달립니다. {run()} 가능 중급자 레벨 : 빠르게 달리고 {run()} 가능, 점프{jump()} 가능 고급자 레벨 : 천천히 달립니다. {run()} 가능, 점프{jump()} 가능, 한 바퀴 돌 수 있습니다. {turn()} 가능 플레이어는 go() 명령어를 받으면 이 세가지 기능을 수행합니다. 이 중 할 수 없는 것은 할 수 없다는 메시지를 ..
-
Java Study [2022-08-15] - 객체지향프로그래밍(추상 클래스 응용 : 템플릿 메서드)백엔드 2022. 8. 16. 22:11
📌 Java Study 🔸 2022-08-15 월요일 [추상 클래스 응용] 1. 템플릿 메서드 템플릿 : 틀이나 견본을 의미 텔플릿 메서드 : 추상 메서드나 구현된 메서드를 활용하여 전체의 흐름(시나리오)를 정의해 놓은 메서드 final로 선언하여 재정의 할 수 없게 함 템플릿 메서드 패턴 : 디자인 패턴의 일종 프레임 워크에서 많이 사용되는 설계 패턴 추상 클래스로 선언된 상위 클래스에서 추상 메서드를 이용하여 전체 구현의 흐름을 정의하고 구체적인 각 메서드 구현은 하위 클래스에 위임함 하위 클래스가 다른 구현을 했다고 해서 템플릿 메서드에 정의된 시나리오대로 수행됨 상위 클래스에서 메서드를 생성 시 public abstract void washCar() 라고 정의할 경우, 모든 하위 클래스에서 이 메..
-
Java Study [2022-08-14] - 객체지향프로그래밍(추상 클래스)백엔드 2022. 8. 15. 22:00
📌 Java Study 🔸 2022-08-14 일요일 [추상 클래스] 1. 추상 클래스 추상 클래스 : 추상 메서드를 포함한 클래스 추상 메서드 : 구현 코드가 없이 선언부만 있는 메서드 abstract 예약어 사용 : 추상 클래스는 new(인스턴스화) 할 수 없음 메서드에 body가 없음 public abstract void display(); public abstract void typing(); 일반적으로 클래스를 생성하였다면, 오류 발생 => abstract키워드를 붙여 public abstract class 클래스명 으로 지어야 함 위 코드는 구현코드가 없음, 언제 구현이 되는지? => 하위 클래스에서 구현 추상 클래스는 단독 사용으로 만들어지는 것이 아니라 상위 클래스용으로 주로 사용 하나라도..
-
[Eclipse] "Cannot instantiate the type OOO"트러블 슈팅(Trouble Shooting) 2022. 8. 15. 21:41
DeskTop 클래스 public class DeskTop extends Computer { public void display() { System.out.println("DestTop display"); } public void typing() { System.out.println("DeskTop typing"); } } Computer 클래스 public abstract class Computer { public abstract void display(); public abstract void typing(); public void turnOn() { System.out.println("전원을 켭니다."); } public void turnOff() { System.out.println("전원을 끕니..
-
Java Study [2022-08-13] - 객체지향프로그래밍(상속과 다형성 코딩 문제 풀이)백엔드 2022. 8. 14. 20:18
📌 Java Study 🔸 2022-08-13 토요일 [상속과 다형성] 1. 1번 문제풀기(직접 코딩) 문제 : 일반 고객과 VIP 고객의 중간 등급 만들기, 고객이 늘어 VIP 고객만큼 물건을 많이 구입하지 않지만, 단골인 분들을 GOLD 등급으로 관리하고 싶다. 혜택은 다음과 같다. 제품을 살 때는 항상 10%를 할인 보너스 포인트는 2%를 적립 담당 전문 상담원은 없음 Customer 클래스에서 상속을 받아 GoldCustomer를 구현해보기 Customer 클래스 package witharraylist; public class Customer { protected int customerID; protected String customerName; protected String customerGra..
-
Java Study [2022-08-12] - 객체지향프로그래밍(상속과 다형성)백엔드 2022. 8. 13. 03:38
📌 Java Study 🔸 2022-08-12 금요일 [상속과 다형성] 1. 다형성(polymorphism) 하나의 코드가 여러 자료형으로 구현되어 실행되는 것 같은 코드에서 여러 실행 결과가 나옴 정보은닉, 상속과 더불어 객체지향 프로그래밍의 가장 큰 특징 중 하나 객체지향프로그래밍의 유연성, 재활용성, 유지보수성에 기본이 되는 특징 class Animal{ public void move() { System.out.println("동물이 움직입니다."); } } class Human extends Animal { public void move() { System.out.println("사람이 두 발로 걷습니다."); } } class Tiger extends Animal { public void mov..
-
Java Study [2022-08-11] - 객체지향프로그래밍(상속과 override)백엔드 2022. 8. 12. 02:07
📌 Java Study 🔸 2022-08-11 목요일 [상속과 다형성] 1. 상속에서 클래스 생성 과정과 형 변환 하위 클래스가 생성되는 과정 하위 클래스가 생성될 때 상위 클래스가 먼저 생성됨 상위 클래스의 생성자가 호출되고, 하위 클래스의 생성자가 호출됨 하위 클래스의 생성자에서는 무조건 상위 클래스의 생성자가 호출되어야함 하위 클래스에서 상위 클래스의 생성자를 호출하는 코드가 없는 경우 컴파일러는 상위 클래스 기본 생성자를 호출하기 위한 super()를 추가함 super()로 호출되는 생성자는 상위 클래스의 기본 생성자임 만약, 상위 클래스의 기본 생성자가 없는 경우 (매개 변수가 있는 생성자만 존재하는 경우), 하위 클래스는 명시적으로 상위 클래스이 생성자를 호출해야함 원리를 파악하기 위해 코드에..