Java

    [Java Effective] 애너테이션(Annotation)

    애너테이션(Annotation) 애너테이션이란? 프로그램의 소스코드 안에 다른 프로그램을 위한 정보를 미리 약속된 형식으로 포함시킨 것 애너테이션을 기능을 가지고 있는 것이라고 생각할 수 있으나 마크, 표시를 해놓는 주석일 뿐이다. 애너테이션에는 컴파일 시점에 알 수 있는 값만 들어갈 수 있다. 즉 런타임 중에 알아내야 하는 값은 사용할 수 없다. 애너테이션의 역할 컴파일러에게 문법 에러를 체크하도록 정보를 제공 프로그램을 빌드할 때 코드를 자동으로 생성할 수 있도록 정보를 제공 런타임에 특정 기능을 실행하도록 정보를 제공 애너테이션의 종류 표준 애너테이션 자바에서 기본적으로 제공하는 애너테이션 @Override 컴파일러에게 메서드를 오버라이딩하는 것이라고 알림 @Deprecated 앞으로 사용하지 않을..

    [Java Effective] 열거체(enumeration type)

    열거체(enumeration type) 열거형 사용 배경 // 다른 범주에 속하는 상수를 정의할 때, 상수명이 중복되는 경우가 발생할 수 있다. public static final int SPRING = 1; public static final int SUMMER = 2; public static final int DJANGO = 1; public static final int SPRING = 2; // 계절의 SPRING과 중복 // 인터페이스를 사용하여 상수를 구분할 수 있지만, interface Seasons { int SPRING = 1, SUMMER = 2; } interface Frameworks { int DJANGO = 1, SPRING = 2; } // 의미적으로 서로 비교할 수 없는 개..

    [Java Collection] 컬렉션 프레임워크(Collection Framework)

    [Java Collection] 컬렉션 프레임워크(Collection Framework)

    컬렉션 프레임워크(Collection Framework) 컬렉션 프레임워크는 특정 자료 구조에 데이터를 추가하고, 삭제하고, 수정하고, 검색하는 등의 동작을 수행하는 편리한 메서드들을 제공 컬렉션 프레임워크의 구조 주요 인터페이스 List와 Set은 서로 공통점이 많아 위 그림과 같이 Collection이라는 인터페이스로 묶인다. List List는 데이터의 순서가 유지되며, 중복 저장이 가능한 컬렉션을 구현하는 데에 사용됩니다. ArrayList, Vector, Stack, LinkedList 등이 List 인터페이스를 구현합니다. Set Set은 데이터의 순서가 유지되지 않으며, 중복 저장이 불가능한 컬렉션을 구현하는 데에 사용됩니다. HashSet, TreeSet 등이 Set 인터페이스를 구현합니다..

    [Java Collection] 제네릭(Generic)

    제네릭(Generic) 클래스나 메서드를 작성할 때, 타입을 구체적으로 지정하는 것이 아니라, 추후에 지정할 수 있도록 일반화해두는 것 작성한 클래스 또는 메서드의 코드가 특정 데이터 타입에 얽매이지 않게 해둔 것을 의미 제네릭 클래스 string 타입만 저장 가능한 인스턴스 생성 class Basket { private String item; Basket(String item) { this.item = item; } public String getItem() { return item; } public void setItem(String item) { this.item = item; } } 위의 Basket 클래스는 String 타입 데이터만 저장할 수 있는 인스턴스를 만들 수 있다. 다양한 타입의 데..

    캡슐화 - getter(획득자)와 setter(설정자) 메소드

    메소드를 통해 데이터를 변경하는 이유? 객체지향프로그래밍에서는 객체 무결성을 위해 메소드를 통해 데이터를 변경하는 방법을 선호한다. 데이터는 외부에서 접근하지 않도록 막고, 메소드는 공개하여 외부에서 메소드를 통해 데이터에 접근하도록 유도한다. 메소드는 매개값을 검증해서 유효한 값만 데이터로 저장할 수 있기 때문이다. getter(획득자) 외부에서 객체의 데이터를 읽어오는데 사용 메소드명 앞에 get을 붙여서 정의 setter(설정자) 외부에서 메소드에 접근하여 조건에 맞을 경우 데이터 값을 변경 가능 메소드명 앞에 set을 붙여서 정의 private 접근제어자가 포함되어 있는 객체의 변수의 데이터 값을 수정하는 예시 class Worker { private String name; // 외부에서 접근 불..

    추상화(Abstraction) - 인터페이스(interface)

    인터페이스(interface) 추상 클래스를 “미완성 설계도"에 비유할 수 있다면, 인터페이스는 그보다 높은 추상성을 가지는 “밑그림"에 빗대어 표현할 수 있다. 다중상속이 가능하다. final 키워드 더이상 확장하거나 변경할 수 없는 마지막 단계의 클래스나 메소드 또는 변수에 사용하는 제어자이다. 수정제어자라고도 한다. 클래스의 기능이나 일관성에 중요할 수 있는 메소드를 변경하는 하위 클래스의 예기치 않는 행동을 방지하기 위해 사용 필드, 지역 변수, 클래스 앞에 위치할 수 있으며 그 위치에 따라 그 의미가 달라진다. 위치 의미 클래스 변경 또는 확장 불가능한 클래스, 상속 불가 메서드 오버라이딩 불가 변수 값 변경이 불가한 상수 인터페이스의 기본 구조 인터페이스의 모든 메소드는 자동으로 퍼블릭 추상 ..

    추상화(Abstraction)

    추상화(Abstraction)

    추상화(Abstraction) 기존 클래스들의 공통적인 요소들을 뽑아서 클래스를 정의하는것 상향식과 하향식 설계 모두 상관 없다. 불필요한 부분을 생략하고 객체의 속성 중 가장 중요한 것에만 중점을 두어 개략화하는 것, 즉 모델화하는 것으로 데이터의 공통된 성질을 추출하여 슈퍼 클래스를 선정하는 개념이다. 추상화를 사용하면 코드의 재사용성, 가독성을 높이고, 생산성의 증가, 에러 감소, 유지 보수에 있어 많은 시간을 줄일 수 있다. abstract 제어자 메서드 앞에 붙은 경우를 ‘추상 메서드(abstract method)’, 클래스 앞에 붙은 경우를 ‘추상 클래스(abstract class)’라 각각 부른다. 추상 클래스와 추상 메소드는 파생 클래스에 클래스 구현요소에 대한 청사진을 제공함으로써 클래스..

    다형성(Polymorphism)

    다형성(Polymorphism) 다형성이란 같은 자료형에 여러 가지 객체를 대입하여 다양한 결과를 얻어내는 성질을 의미한다. 자바에서 다형성을 부모 클래스 타입의 참조변수로 자식 클래스 타입의 인스턴스를 참조할 수 있도록 하여 구현한다. 다형성으로 인해 하나의 함수는 상속을 통해 기능을 확장시키고 변경하는 것이 가능하다. 상위 클래스의 타입으로 하위 클래스 타입의 객체 참조 예시 //참조변수의 다형성 예시 class Friend { public void friendInfo() { System.out.println("나는 당신의 친구입니다."); } } class BoyFriend extends Friend { public void friendInfo() { System.out.println("나는 당신의..