[1일1쓰기] Day 17 - 이것이 자바다 6장

Ki Tae Park·2021년 6월 12일
0

자바

목록 보기
5/13

6.1 객체 지향 프로그래밍

부품에 해당하는 객체들을 먼저 만들고, 이것들을 하나씩 조립해서 완성된 프로그램을 만드는 기법을 객체 지향 프로그래밍 이라고 부른다.

6.1.1 객체란?

객체란 자신의 속성을 가지고 있고 다른 것과 식별가능한 것을 말한다.

6.1.2 객체의 상호작용

객체들 사이의 상호작용은 메소드이다. 객체가 다른 객체의 기능을 쓰는 것이 바로 메소드 호출.

6.1.3 객체 간의 관계

객체 지향 프로그래밍은 만들고자 하는 완성품인 개게를 모델링하고, 집합 관계에 있는 부품 객체와 사용 관계에 있는 객체를 하나씩 설계한 후 조립하는 방식으로 프로그램을 개발하는 기법이다.

6.1.4 객체 지향 프로그래밍의 특징

캡슐화(Encapsulation)

접근 제한자를 둠으로써 객체 필드와 메소드 사용범위를 제한하여 외부로부터 보호함.

상속(Inheritance)

상위 객체가 가지고 있는 메소드와 필드를 하위 객체로 물려줌

  • 하위 객체를 빨리 설계할 수 있게 해줌
  • 이미 개발된 객체를 재사용하기 때문에 코드 중복을 줄여줌.

다형성(Polymorphism)

같은 타입이지만 실행 결과가 다양한 객체를 이용할 수 있는 성질(?)

6.2 객체와 클래스

6.3 클래스 선언

6.4 객체 생성과 클래스 변수

클래스 용도

  • 라이브러리 - 다른 클래스에서 이용할 목적
  • 실행용 - 프로그램의 실행 진입점인 main () 메소드를 제공하는 역할을 함

6.5 클래스의 구성 멤버

6.5.1 필드

6.5.2 생성자

6.5.3 메소드

6.6 필드

  • 객체의 고유 데이터
  • 객체가 가져야 할 부품
  • 객체의 현재 상태 데이터를 저장하는 곳

6.6.1 필드 선언

6.6.2 필드 사용

6.7 생성자

6.7.1 기본 생성자

6.7.2 생성자 선언

6.7.3 필드 초기화

6.7.4 생성자 오버로딩(Overloading)

생성자 오버로딩이란 매개 변수를 달리하는 생성자를 여러 개 선언하는 것을 말한다.

6.7.5 다른 생성자 호출(this())

6.8 메소드

6.8.1 메소드 선언

리턴 타입

메소드 이름

  • 숫자로 시작하면 안 되고, $와 _를 제외한 특수 문자를 사용하지 말아야 한다.
  • 관례적으로 메소드명은 소문자로 작성한다.
  • 서로 다른 단어가 혼합된 이름이라면 뒤이어 오는 단어의 첫머리 글자는 대문자로 작성한다.

매개 변수 선언

매개 변수의 수를 모를 경우

6.8.2 리턴(return)문

리턴값이 있는 메소드

리턴값이 없는 메소드(void)

6.8.3 메소드 호출

객체 내부에서 호출

객체 외부에서 호출

6.8.4 메소드 오버로딩

클래스 내에 같은 이름의 메소드를 여러 개 선언하는 것을 메소드 오버로딩(overloading)이라고 한다.

오버로딩 → 많이 싣는다.

6.9 인스턴스 멤버와 this

인스턴스 멤버 → 인스턴스 생성 후 사용할 수 있는 필드와 메소드

객체 외부에서 인스턴스 멤버에 접근하기 위해 참조 변수를 사용하듯이 객체 내부에서 인스턴스 멤버에 접근하기 위해선 this를 사용한다.

객체에서는 자신을 this 라고 한다.

  • 생성자와 메소드의 매개 변수 이름이 필드와 동일한 경우
  • 인스턴스 멤버인 필드임을 명시하고자 할 때 사용

6.10 정적 멤버와 static

정적 멤버 == 클래스에 고정된 멤버. 객체를 생성하지 않고 사용할 수 있는 필드와 메서드를 말함.

객체에 소속된 멤버가 아니라 클래스에 소속된 멤버이기 때문에 클래스 멤버라고도 부름.

6.10.1 정적 멤버 선언

인스턴스 vs 정적

6.10.2 정적 멤버 사용

6.10.3 정적 초기화 블록

6.10.4 정적 메소드와 블록 선언 시 주의할 점

6.10.5 싱글톤

6.11 final 필드와 상수

6.11.1 final 필드

6.11.2 상수(static final)

6.12 패키지

클래스를 체계적으로 관리하기 위해 패키지를 사용함. 패키지는 클래스의 일부분임, 클래스를 유일하게 만들어주는 식별자 역할을 함.

6.12.1 패키지 선언

규칙

  • 숫자로 시작해서는 안 되고, _, $를 제외한 특수 문자를 사용해서는 안된다.
  • java로 시작하는 패키지는 자바 표준 API에서만 사용하므로 사용해서는 안된다.
  • 모두 소문자로 작성하는 것이 관례이다.

6.12.2 패키지 선언이 포함된 클래스 컴파일

6.12.3 이클립스에서 패키지 생성과 클래스 생성

6.12.4 import문

6.13 접근 제한자

6.13.1 클래스의 접근 제한

default 접근 제한

public 접근 제한

6.13.2 생성자의 접근 제한

6.13.3 필드와 메소드의 접근 제한

6.14 Getter와 Setter 메소드

객체 지향 프로그래밍에서 객체의 데이터는 객체 외부에서 직접적으로 접근하는 것을 막는다. 왜냐면 객체의 데이터를 외부에서 마음대로 읽고 변경하면 객체의 무결성(결점이 없는 성질)이 깨질 수 있기 때문이다.

이러한 문제를 해결하기 위해 객체 지향 프로그래밍에서는 메소드를 통해서 데이터를 변경하는 방식을 선호한다.

6.15 어노테이션

어노테이션 = 메타데이터

메타데이터란 애플리케이션이 처리해야 할 데이터가 아닌, 컴파일 과정과 실행 과정(런타임 과정)에서 코드를 어떻게 컴파일하고 처리할 것인지 알려주는 정보다. → 그러니까..코드를 작성할 때 쓰는 주석같은 개념인가~?

어노테이션은 다음과 같이 작성됨.

@AnnotationName

어노테이션의 용도

  • 컴파일러에게 코드 문법 에러를 체크하도록 정보를 제공
  • 소프트웨어 개발 툴이 빌드나 배치 시 코드를 자동으로 생성할 수 있도록 정보를 제공
  • 실행 시(런타임 시) 특정 기능을 실행하도록 정보를 제공

6.15.1 어노테이션 타입 정의와 적용

6.15.2 어노테이션 적용 대상

6.15.3 어노테이션 유지 정책

어노테이션을 어느 범위까지 유지할 것인지 (소스상에만 유지할 건지, 컴파일된 클래스까지 유지할 건지, 런타임 시에도 유지할 건지) 지정해야 함.

리플렉션이란 런타임 시에 클래스의 메타 정보를 얻는 기능이다.

6.15.4 런타임 시 어노테이션 정보 사용하기

profile
#Coder Became Developer

0개의 댓글