Language/Java
-
[JAVA/자료구조] 자료구조(Data Structure)Language/Java 2021. 6. 8. 12:56
자료구조란? 프로그램에서 사용할 많은 데이터를 메모리 상에서 관리하는 여러 구현 방법이다. 효율적인 자료구조가 성능 좋은 알고리즘의 기반이 된다. 자료의 효율적인 관리는 프로그램의 수행속도와 밀접한 관련이 있다. 여러 자료구조 중 구현하려는 프로그램에 맞는 최적의 자료구조를 활용해야하므로 자료구조에 대한 이해가 중요하다. 자료구조 종류 배열(Array) - 선형으로 자료를 관리, 정해진 크기의 메모리를 먼저 할당받아 사용한다. - 자료의 물리적 위치와 논리적 위치가 같다. 연결 리스트(LinkedList) - 선형으로 자료를 관리, 자료가 추가될 때마다 메모리를 할당 받고 자료는 링크로 연결된다. - 자료의 물리적 위치와 논리적 위치가 다를 수 있다. 큐(Queue) - 가장 먼저 입력 된 자료가 가장 ..
-
[JAVA] Object 클래스와 Class클래스Language/Java 2021. 6. 7. 20:05
java.lang 패키지 프로그래밍시 import 하지 않아도 자동으로 import된다. => import.java.lang.* 많이 사용하는 기본 클래스들이 속한 패키지이다. => String, Integer, System.... toString( ) 메서드 객체의 정보를 String으로 바꾸어서 사용할 때 쓰인다. String이나 Integer클래스는 이미 재정의 되어 있다. equals( ) 메서드 두 인스턴스의 주소 값을 비교하여 True/False를 반환한다. 재정의 하여 두 인스턴스가 논리적으로 동일함의 여부를 구현할 수 있다. 인스턴스가 다르더라도 논리적으로 동일한 경우 True를 반환하도록 재정의 할 수 있다. hashCode( ) 메서드 hashCode( )는 인스턴스의 저장 주소를 반환..
-
[JAVA] 인터페이스(interface)Language/Java 2021. 6. 7. 16:03
인터페이스(interface) 모든 메서드가 추상 메서드로 선언된다. => public abstract 모든 변수가 상수로 선언된다. => public static final interface 인터페이스 이름{ public static final float pi = 3.14f; public void makeSomething( ); } 디폴트 메서드와 정적 메서드 기능의 제공으로 일부 구현 코드가 있다. 인터페이스 구현과 형 변환 인터페이스를 구현한 클래스는 인터페이스 형으로 선언한 변수로 형 변환 할 수 있다. => Calc calc = new CompleteCalc( ) : Calc는 인터페이스 CompleteCalc는 구현된 클래스 상속에서의 형 변환과 동일한 의미이다. 클래스 상속과 달리 구현 코드..
-
[JAVA/디자인패턴] 템플릿 메서드(Template Method)Language/Java 2021. 6. 6. 19:10
템플릿 메서드(template method) 추상 메서드나 구현된 메서드를 활용하여 코드의 흐름(시나리오)을 정의하는 메서드 final로 선언하여 하위 클래스에서 재정의 할 수 없도록 한다. 추상 클래스로 선언된 상위 클래스에서 템플릿 메서드를 활용하여 전체적인 흐름을 정의하고, 하위 클래스에서 다르게 구현되어야 하는 부분은 추상 메서드로 선언하여 하위 클래스에서 구현하도록 한다. 프레임워크(framework)에서 많이 사용되는 설계 패턴 템플릿 메서드 예시 Car.java AICar.java ManualCar.java CarTest.java 자동차의 시동을 켭니다. 자율 주행을 합니다. 자동차가 스스로 방향을 바꿉니다. 자동차가 장애물 앞에서 스스로 멈춥니다. 자동차의 시동을 끕니다. =========..
-
[JAVA] 추상 클래스(abstract class)Language/Java 2021. 6. 6. 18:41
추상 클래스(abstract class) 구현 코드 없이 메서드의 선언부분만 존재하는 추상 메서드를 포함하는 클래스 => 메서드 선언(declaration): 반환 타입, 메서드 이름, 매개변수로 구성 => 메서드 정의(definition): 메서드 구현과 동일한 의미 구현부를 가진다. abstract 예약어를 사용한다. 추상 클래스는 인스턴스화를 할 수 없다.(new 사용 불가능) 추상 클래스 구현 방법 메서드에 구현 코드가 없으면 abstract로 선언한다. abstract로 선언된 메서드를 가진 클래스는 abstract로 선언한다. 모든 메서드가 구현된 클래스라도 abstract로 선언되면 추상 클래스로 인스턴스화 할 수 없다. 추상 클래스 내부의 추상 메서드는 하위 클래스가 상속하여 구현한다. 추..
-
[JAVA] 다형성(polymorphism)과 다운 캐스팅(downcasting)Language/Java 2021. 6. 5. 23:16
다형성(polymorphism) 하나의 코드가 여러 자료형으로 구현되어 실행되는 것 같은 코드에서 여러 다른 결과가 나온다. 객체지향 프로그래밍의 가장 큰 특징 중 하나이다. 다형성을 사용하면 유연하고 확장성있고, 유지보수가 편리한 프로그램을 개발할 수 있다. 다형성 예시 다형성을 사용하는 경우 상속과 메서드 재정의를 활용하여 확장성 있는 프로그램을 만들 수 있다. 다른 동물을 추가하는 경우 공통의 Animal클래스에서 상속을 받아 추가적으로 필요한 부분만 구현을 할 수 있다. 여러 클래스를 하나의 타입(상위 클래스)로 핸들링할 수 있다. 상속을 사용할 때? IS-A관계(is a relationship : inheritance) 일반적인 개념과 구체적인 개념과의 관계 상위 클래스: 하위 클래스보다 일반적..
-
[JAVA] 클래스 상속Language/Java 2021. 6. 5. 22:26
클래스 상속 새로운 클래스를 정의할 때 이미 구현된 클래스를 상속받아서 속성이나 기능을 확장하여 클래스를 구현한다. 이미 구현된 클래스보다 더 구체적인 기능을 가진 클래스를 구현해야할 때 기존 클래스를 상속 상속하는 클래스(super class), 상속받는 클래스(sub class) 클래스 상속 문법 class B extends A{ } extends 키워드 뒤에는 하나의 클래스만 올 수 있다. 클래스 B는 A클래스를 상속 받았음을 알 수 있다. 자바는 단일 상속만을 지원한다. 상속을 구현하는 경우 상위 클래스는 하위 클래스보다 더 일반적인 개념과 기능을 가진다. 하위 클래스는 상위 클래스보다 더 구체적인 개념과 기능을 가진다. 하위 클래스가 상위 클래스의 속성과 기능을 확장한다는 의미 protected..
-
[JAVA] ArrayList클래스Language/Java 2021. 6. 3. 23:20
ArrayList(java.util) 기존의 배열 선언과 사용 방식은 배열의 길이를 정하고 요소의 개수가 배열의 길이보다 커지면 배열을 재할당하고 복사를 해야 했다. => int[ ] array = new int[5] #크기가 5인 정수형 배열 배열의 요소를 추가하거나 삭제하면 다른 요소들의 이동에 대해 구현을 해야한다. ArrayList는 객체 배열을 좀 더 효율적으로 관리하기 위해 자바에서 제공해주는 클래스 ArrayList 주요 메서드 add(E e): 요소 하나를 배열에 추가한다. E는 요소의 자료형을 의미 size( ): 배열에 추가된 요소 전체 개수를 반환 get(int index): 배열의 index위치에 있는 요소 값을 반환한다. remove(int index): 배열의 index위치에 있..