728x90
반응형
SMALL

Java 56

[JAVA] 자바 - IS-A 관계, HSA-A 관계

IS-A관계(is a realationship : inheritance) 일반적인 개념과 구체적인 개념과의 관계 상위 클래스 : 하위 클래스보다 일반적인 개념(예 : Employee) 하위 클래스 : 상위 클래스보다 더 구체적인 개념(예 : Engineer, Manager, ...) 상속은 클래스 간의 결합도가 높은 설계입니다. 상위 클래스의 수정이 많은 하위 클래스에 영향을 미칠 수 있습니다. 계층구조가 복잡하거나 계급(hierarchy)이 높으면 좋지 않습니다. HSA-A관계(composition) 클래스가 다른 클래스를 포함하는 관계(변수로 선언)입니다. 코드 재사용의 가장 일반적인 방법입니다. Student가 Subject를 포함하는 예제와 같은 경우입니다. Library를 구현할 때 ArrayL..

Java 2021.11.30

[JAVA] 자바 - 다형성을 활용한 멤버쉽 프로그램 확장

일반 고객과 VIP 고객 중간 멤버쉽 만들기 고객이 늘어 일반 고객보다는 많이 구매하고 VIP보다는 적게 구매하는 고객에게도 혜택을 주는 경우 GOLD 고객 등급을 만들고 혜택은 다음과 같습니다. 1. 제품을 살때는 10%를 할인해줍니다. 2. 보너스 포인트는 2%를 적립해줍니다. GoldCustomer.java public class GoldCustomer extends Customer { double salesRatio; public GoldCustomer(int customerID, String customerName) { super(customerID, customerName); salesRatio = 0.1; bonusRatio = 0.02; customerGrade = "Gold"; } @Ov..

Java 2021.11.30

[JAVA] 자바 - 메서드 재정의와 가상 메서드 원리

메서드가 어떻게 호출되고 실행되는가? 메서드의 이름은 주소 값을 나타냅니다. 메서드는 명령어의 set이고 프로그램이 로드되면 메서드 영역(코드 영역)에 명령어 set이 위치합니다. 해당 메서드가 호출되면 명령어 set이 있는 주소를 찾아 명령어가 실행됩니다. 이때 메서드에서 사용하는 변수들은 스택 메모리에 위치하게 됩니다. 따라서 다른 인스턴스라도 같은 메서드의 코드는 같으므로 같은 메서드가 호출됩니다.(다만 변수 값은 다릅니다.) 인스턴스가 생성되면 변수는 힙 메모리에 따로 생성되지만 메서드 명령어 set은 처음 한 번만 로드됩니다. public class TestMethod { int num; void aaa() { System.out.println("aaa() 호출"); } public static..

Java 2021.11.30

[JAVA] 자바 - 메서드 재정의 하기(Overriding)

하위 클래스에서 메서드 재정의 하기 오버 라이딩 : 상위 클래스에 정의된 메서드의 구현 내용이 하위 클래스에서 구현한 내용과 맞지 않는 경우 하위 클래스에서 동일한 이름의 메서드를 재정의 할 수 있습니다. VIPCustomer 클래스의 calcPrice()는 할인율이 적용되지 않았습니다. 재정의하여 구현해야 합니다. VIPCustomer.java @Override public int calcPrice(int price) { // Override된 메서드이기 때문에 이름이 바뀌면 error bonusPoint += price * bonusRatio; return price - (int)(price * salesRatio); } @overriding 애노테이션(annotation) 애노테이션은 원래 주석이라..

Java 2021.11.30

[JAVA] 자바 - 상속에서 클래스 생성과정과 형 변환

하위 클래스가 생성되는 과정 하위 클래스를 생성하면 상위 클래스가 먼저 생성됩니다. new VIPCustomer()를 호출하면 Customer()가 먼저 호출됩니다. 클래스가 상속받은 경우 하위 클래스의 생성자에서는 반드시 상위 클래스의 생성자를 호출합니다. Customer.java public Customer() { customerGrade = "SILVER"; bonusRatio = 0.01; System.out.println("Customer() 생성자 호출"); } VIPCustomer.java public VIPCustomer() { bonusRatio = 0.05; salesRatio = 0.1; customerGrade = "VIP"; System.out.println("VIPCustomer..

Java 2021.11.30

[JAVA] 자바 - 상속을 활용한 멤버쉽 클래스 구현하기

멤버쉽 시나리오 회사에서 고객 정보를 활용한 맞춤 서비스를 하기 위해 일반 고객과 이보다 충성도가 높은 우수고객에 따른 서비스를 제공하고자 합니다. 물품을 구매할 때 적용되는 할인율과 적립되는 보너스 포인트의 비율이 다릅니다. 여러 멤버쉽에 대한 각각 다양한 서비스를 제공할 수 있습니다. 멤버쉽에 대한 구현을 클래스 상속을 활용하여 구현합니다. 일반 고객 클래스 구현 고객의 속성 : 고객 아이디, 이름, 등급, 보너스 포인트, 보너스 포인트 적립비율 일반 고객의 경우 물품 구매시 1%의 보너스 포인트 적립 public class Customer { private int customerID; private String customerName; private String customerGrade; int b..

Java 2021.11.30

[JAVA] 자바 - 객체 배열을 구현한 클래스 ArrayList

java.util 패키지에서 제공되는 ArrayList 기존의 배열 선언과 사용 방식은 배열의 길이를 정하고 요소의 개수가 배열의 길이보다 커지면 배열을 재할당하고 복사해야 했습니다. 배열의 요소를 추가하거나 삭제하면 다른 요소들의 이동에 대한 구현을 해야 했습니다. ArrayList는 객체 배열을 좀 더 효율적으로 관리하기 위해 자바에서 제공해주는 클래스입니다. 이미 많은 메서드들이 최적의 알고리즘으로 구현되어 있어 각 메서드의 사용방법만 익히면 유용하게 사용할 수 있습니다. ArrayList의 주요 메서드 메서드 설명 boolean add(E e) 요소 하나를 배열에 추가. E는 요소의 자료형을 의미 int size() 배열에 추가된 요소 전체 개수를 반환 E get(int index) 배열의 ind..

Java 2021.11.25

[JAVA] 자바 - 2차원 배열 사용하기

다차원 배열 2차원 이상으로 구현된 배열입니다. 평면(2차원 배열)이나 공간(3차원 배열)을 활용한 프로그램을 구현합니다. int[][] arr = new int[2][3]; int[][] arr = {{1, 2, 3}, {4, 5, 6}}; 2차원 배열 예제 TwoDimenstionTest.java public class TwoDimenstionTest { public static void main(String[] args) { //int[][] arr = {{1, 2, 3}, {1, 2, 3, 4}}; //int[][] arr = new int[3][4]; for(int i = 0; i < arr.length; i++) { for(int j = 0; j < arr[i].length; j++) { Sy..

Java 2021.11.25

[JAVA] 자바 - 객체 배열 사용하기

객체 배열 선언과 구현 기본 자료형 배열은 선언과 동시에 배열의 크기만큼 메모리가 할당되지만, 객체 배열의 경우에는 요소가 되는 객체의 주소가 들어갈(4바이트, 8바이트) 메모리만 할당되고(null) 각 요소 객체는 생성하여 저장해야 합니다. Book.java public class Book { private String title; private String author; public Book() { } public Book(String title, String author) { // 초기화 작업 this.title = title; this.author = author; } public String getTitle() { return title; } public void setTitle(String t..

Java 2021.11.25

[JAVA] 자바 - 배열 (자료를 순차적으로 한꺼번에 관리하는 방법)

배열이란? 동일한 자료형의 순차적 자료 구조이고 유한 집합으로 정의할 수 있습니다. 배열은 같은 종류의 데이터를 많이 다뤄야 하는 경우에 사용할 수 있는 가장 기본적인 자료 구조입니다. 배열을 구성하는 각각의 값을 배열 요소(element)라고 합니다. 배열에서의 위치를 가리키는 숫자를 인덱스(index)라고 합니다. 인덱스 연산자[]를 사용하여 빠른 참조가 가능합니다. 물리적 위치와 논리적 위치가 동일합니다. 배열의 순서는 0부터 시작합니다. 자바에서는 객체 배열을 구현한 ArrayList를 많이 활용합니다. 배열은 선언되는 형식에 따라 1차원 배열, 2차원 배열뿐만 아니라 그 이상의 다차원 배열로도 선언할 수 있습니다. 1차원 배열 배열 선언 - 2가지 방법이 있습니다. int[] arr1 = new..

Java 2021.11.24
728x90
반응형
LIST