Java
객체 지향의 5가지 원칙
SRP: 단일 책임 원칙(Single responsibility principle) OCP: 개방 -폐쇄 원칙(Open/closed principle) LSP: 리스코프 치환 원칙(Liskov substitution principle) ISP: 인터페이스 분리 원칙(Interface segregation principle) DIP: 의존관계 역전 원칙(Dependency inversion principle) SRP 단일 책임 원칙 Single responsibility principle 한 클래스는 하나의 책임만 가져야 한다. 하나의 책임이라는 것은 모호하다. 클 수 있고, 작을 수 있다. 문맥과 상황에 따라 다르다. 중요한 기준은 변경이다. 변경이 있을 때 파급 효과가 적으면 단일 책임 원칙을 잘 따른..
[Java] 어노테이션(Annotation)
어노테이션은 사전적 의미로는 주석이라는 뜻이다. 자바에서 사용될 때의 어노테이션은 코드 사이에 주석처럼 쓰여서 특별한 의미, 기능을 수행하도록 하는 기술이다. 즉, 프로그램에게 추가적인 정보를 제공해주는 메타데이터(meta data: 데이터를 위한 데이터)라고 볼 수 있다. 메타 데이터? 데이터를 위한 속성정보이다. 데이터를 위한 데이터로서 하위 레벨 데이터를 설명 및 기술하는 데이터라고 보면 된다. 도서관을 예시로 들어보자면 표제, 저자, 주제명, 분류기호 등이 포함되어 있는 목록이 메타데이터에 속한다. 어노테이션? 프로그램 실행 관점에서 보면 프로그램이 처리할 메인 데이터가 아니라 실행과정에서 데이터를 어떻게 처리할 것인지 알려주는 서브 데이터라고 볼 수 있다. 어노테이션의 용도 컴파일러에게 코드 작..
[Java] HashMap
HashMap HashMap은 Map 인터페이스에 속해있는 컬렉션이다. Map 인터페이스의 기본 기능들을 전부 구현할 수 있다. 데이터들은 모두 (키, 값)의 1:1 구조로 되어있는 Entry로 되어있다. 같은 키의 값을 삽입하려고하면 해당 키의 값이 변경된다. 키는 고유한 속성이지만 값은 고유한 속성이 아니다. 키는 중복이 되지 않지만 값은 중복될 수 있다. 다른 특징은 HashTable과 유사하지만 동기화가 되지 않고 Null 값도 저장이 가능하다. HashMap 선언 및 사용 import java.util.HashMap; public class HashMapDemo { public static void main(String[] args) { HashMap hm = new HashMap(); // 타..
[Java] ArrayList
ArrayList는 배열에서 좀 더 발전된 형태이다. 공부하면서 array만 썼는데 ArrayList를 알고 나서 매우 편하다는 걸 알게 되었다. ArrayList에 대해 알아보자. ArrayList란? Collection 프레임워크의 일부이며 java.util 패키지에 소속되어 있다. 표준 배열보다는 느리지만 배열에서 많은 조작이 필요한 경우 유용하게 사용할 수 있다. ArrayList는 자바의 List 인터페이스를 상속받는 여러 클래스 중 하나이다. 일반 배열과 동일하게 연속된 메모리 공간을 사용하며 인덱스는 0부터 시작한다. 배열과의 차이점은 배열의 크기가 고정인 반면 ArrayList는 크기가 가변적으로 변한다. 내부적으로 저장이 가능한 메모리 용량이 있으며 현재 사용 중인 공간의 크기가 있다. ..