[Java 객체지향] 상속에서 클래스의 생성과정과 형변환
·
Java & Kotlin
하위 클래스 생성 과정 하위 클래스가 생성되면 상위 클래스가 먼저 생성된다. VIPCustomer 생성자가 먼저 Customer 생성자를 호출한다. Customer 생성자 public Customer() { customerGrade = "SILVER"; bonusRatio = 0.01; System.out.println("Customer() call");// Customer 생성자 호출 시 출력 메세지 } VIPCustomer 생성자 public VIPCustomer() { bonusRatio = 0.05; saleRatio = 0.1; customerGrade = "VIP"; System.out.println("VIPCustomer() call");// VIPCustomer 생성자 호출 시 출력 메세지..
[Java 객체지향] 상속 활용 (멤버십 클래스 구현)
·
Java & Kotlin
요구 사항 회사에서 고객 정보를 활용한 맞춤 서비스를 하기 위해 일반고객(Customer)과 이보다 충성도가 높은 우수고객(VIPCustomer)에 따른 서비스를 제공하고자 함 물품을 구매 할때 적용되는 할인율과 적립되는 보너스 포인트의 비율이 다름 여러 멤버십에 대한 각각 다양한 서비스를 제공할 수 있음 멤버십에 대한 구현을 클래스 상속을 활용하여 구현해보기 Customer.java default 생성자를 이용해서 등급과 보너스 비율의 초기값을 정했다. 하위 클래스인 VIPCustomer에서 바꿔줄 멤버 변수 customerGrade는 protected로 설정 나머지 private 변수들은 getter와 setter를 만들어주었다. package ch02; public class Customer { p..
[Java 객체지향] 상속
·
Java & Kotlin
이번 장부터 클래스 간 관계와 인터페이스 간 관계를 설계하는 방법에 대해 배우고 어떻게 활용하는지 알아볼 수 있다. 또 객체지향 프로그램이 왜 유지 보수가 쉽고 수정이 용이하며 확장성이 좋은지 더 구체적으로 알아볼 수 있다. 상속 (inheritance) 기존의 클래스의 기능과 속성을 다른 클래스에서 확장하여 사용하기 위함 하위 클래스에서 더 구체적인 개념과 많은 기능을 수행함 코드의 재사용 기능 (but 코드를 재사용하기 위해 무조건 상속을 하는 것은 X) 상속하는 클래스 : 상위 클래스 (parent) / 상속받는 클래스 : 하위 클래스 (child) 문법 class B extends A {} extends 뒤에 올 수 있는 클래스 개수는 하나 (단일 상속) → 모호함 x 참고로 인터페이스 뒤에는 여..
[Java 객체지향] ArrayList 활용
·
Java & Kotlin
문제 1001학번 Lee와 1002학번 Kim, 두 학생이 있습니다. Lee 학생은 국어와 수학 2과목을 수강했고, Kim 학생은 국어, 수학, 영어 3 과목을 수강하였습니다. Lee 학생은 국어 100점, 수학 50점입니다. Kim 학생은 국어 70점, 수학 85점, 영어 100점입니다. Student와 Subject 클래스를 만들고 ArrayList를 활용하여 두 학생의 과목 성적과 총점을 출력하세요 StudentTest.java 주어진 StudentTest 클래스를 봤을때, 구현해야할 것은 Student 클래스의 생성자, addSubject, showStudentInfo이다. 과목 ArrayList에 저장된 정보가 없을 때 출력되는 메세지를 확인하기 위해 studentPark 인스턴스를 추가로 생성..
[Java 객체지향] ArrayList
·
Java & Kotlin
java util 패키지에서 제공되는 ArrayList 기존의 객체 배열은 길이를 정하고 꽉 찼을 경우 크기가 더 큰 배열을 만들어서 복사했어야함 (번거로움) 배열의 요소를 추가하거나 삭제할 때 요소의 이동을 따로 구현하지 않아도 됨 객체 배열을 더 효율적으로 관리하기 위해 제공되는 클래스 주요 메서드 boolean add(E e) : 요소 하나를 배열에 추가. E는 요소의 자료형 int size() : 배열의 요소 전체 개수 반환 E get(int index) : index 위치에 있는 요소 반환 (제거는 X) E remove(int index) : index 위치에 있는 요소 제거하고 값 반환 boolean isEmpty() : 배열이 비어 있는지 여부 반환 ArrayList 클래스에 마우스 올리고 ..
[Java 객체지향] 2차원 배열
·
Java & Kotlin
다차원 배열 평면(2차원 배열) 이나 공간(3차원 배열)을 표현 선언 int[][] arr = new int[2][3]// [행 개수][열 개수] 예제코드 package ch22; public class TwoDimensionTest { public static void main(String[] args) { int[][] arr = {{1,2,3},{4,5,6,7}};// 2차원 배열 선언 및 초기화 int i, j; for (i = 0 ; i < arr.length ; i ++) {// 외부 for문 - 행 for (j = 0 ; j < arr[i].length ; j ++) {// 내부 for문 - 열 System.out.print(arr[i][j] + " "); } System.out.printl..
[Java 객체지향] 객체 배열
·
Java & Kotlin
객체 배열 기본 자료형 배열은 선언하면 배열의 크기만큼 메모리가 할당된다 반면 객체 배열은 선언하게 되면 객체를 위한 공간이 아닌 객체의 주소가 들어갈 공간만 할당된다. 객체는 모두 null로 초기화된다. 각 요소에 들어갈 객체는 직접 생성을 해주어야 한다. Book.java package ch21; public class Book { private String title; private String author; public Book() {}// default constructor public Book(String title, String author) { this.title = title; this.author = author; } public String getTitle() { return titl..
[Java 객체지향] 배열
·
Java & Kotlin
배열 (Array) 동일한 자료형의 순차적 자료구조 요소(Element)와 인덱스로 구성 물리적 위치와 논리적 위치가 동일하다. (각 element의 address가 인접) ↔ linked list는 논리적 위치는 인접하지만 물리적 위치는 다를 수 있음 배열의 주소는 첫번째 element를 가리킨다. 자바에서는 자바 유틸 패키지 안에서 제공되는 ArrayList를 사용한다. 장단점 - 장점 : 인덱스 연산자 [ ]를 이용해 특정 element를 참조하는 것이 빠르다. - 단점 : 배열은 중간에 데이터가 비면 안되므로 수정할 때 Operation 수행 시간이 길다. O(n) insert : 데이터 한칸씩 뒤로 밀림 / delete : 데이터 한칸씩 앞으로 당김 선언 배열을 선언할 때는 길이(length)를..
[Java 객체지향] Singleton Pattern 응용 문제
·
Java & Kotlin
문제 자동차 공장이 있습니다. 자동차 공장은 유일한 객체이고, 이 공장에서 생산되는 자동차는 제작될 때마다 고유의 번호가 부여됩니다. 자동차 번호가 10001부터 시작되어 자동차가 생산될 때마다 10002, 10003 이렇게 번호가 붙도록 자동차 공장 클래스, 자동차 클래스를 구현하세요 다음 CarFactoryTest.java 테스트 코드가 수행 되도록 합니다. CarFactoryTest.java package ch19; public class CarFactoryTest { public static void main(String[] args) { CarFactory factory = CarFactory.getInstance(); Car mySonata = factory.createCar(); Car yo..