전체 글
-
[JAVA] 제네릭(Generic) 프로그래밍Language/Java 2021. 6. 10. 00:13
제네릭(Generic) 자료형 클래스에서 사용하는 변수의 자료형이 여러 개 일 수 있고, 그 메서드는 동일한 경우 클래스의 자료형을 특정하지 않고 추후 해당 클래스를 사용할 때 지정할 수 있도록 선언하는 방식이다. 실제 사용되는 자료형의 변환은 컴파일러에 의해 검증되기 때문에 안정적인 프로그래밍 방식이다. 컬렉션 프레임 워크에서 많이 사용되고 있다. 제네릭 프로그래밍 예 자료형 매개변수 T(type parameter): 해당 클래스를 사용하는 시점에 실제 사용할 자료형을 지정, static 변수는 사용할 수 없다. GenericPrinter: 제네릭 자료형 E: element, K: key, V: value등 여러 알파벳을 의미에 따라 사용할 수 있다. 다이아몬드 연산자 를 다이아몬드 연산자라고 칭한다...
-
[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) 일반적인 개념과 구체적인 개념과의 관계 상위 클래스: 하위 클래스보다 일반적..