[Java] 객체 지향 기법

Walter Mitty·2022년 10월 25일
0

KOSTA

목록 보기
16/33

1. 생성자

  • 클래스와 이름이 같고 호출을 맘대로 못한다.
  • 메서드이다.
  • 리턴타입이 없다 == 메서드 타입이 없다.
  • 객체 생성시에만 호출 가능하다.

2. 생성자의 역할

  • 객체 초기화
  • 초기값을 넣어주는 역할을 한다.

3. 디폴트 생성자

  • 클래스에 생성자 구현을 안해놓으면 컴파일러가 자동으로 만들어주는 생성자이다.
    • 파라미터 없음
    • 실행문 없음
  • 내가 하나라도 생성자를 생성하면, 컴파일러가 자동으로 생성자를 생성해주지 않는다. 그게 NoArg 생성자든, AllArg 생성자든!

기본생성자와, 생성자 이렇게 이름이 똑같은 메서드가 있으면 컴파일러가 헷갈리지 않을까?
=> 오버로딩을 생각해보면 간단한 문제! 들어있는 파라미터가 다르다

메서드 오버로딩

  • 파라미터 개수나 타입 만 다르면 된다.(구분 가능해지니까)
  • 이름이 같은 메서드를 여러개 정의할 수 있다.
  • 오버로딩은 왜 필요할까?
    • 기능은 동일하지만 파라미터 값의 개수나 타입이 다른 경우 다수를 구현해야할 때 사용하는 기법
      (똑같은 기능이지만 다양한 파라미터를 처리해야하는 경우 쉽게 사용가능하다.)
      			void printInfo() {
      				System.out.println("hihi"); //String type
      				System.out.println(1); //int type
      				System.out.println(3.4f); //float type
      				System.out.println("id:" + id);
      				System.out.println("pwd:" + pwd);
      				System.out.println("email:" + email);
      			}
      			```

따라서 앞에 this를 넣어준다.
4. this

  • 현재 객체의 참조 값을 갖는 참조변수
  • class를 작성시 아직 객체가 존재하지 않음
    이런 상황에서 객체이름이 필요한 경우에 사용하는 키워드이다.
    • 따라서 메인에서는 this를 쓸 필요가 없다. 이유는 객체를 생성해서 객체의 이름으로 접근하면 되니까.
    • 객체를 생성하기 전에 현재 객체를 의미하기 위해 this를 쓴다.
    • 주로 지역변수와 멤버변수가 이름이 동일한 경우 멤버변수를 구분하기 위해서 사용한다.

캡슐화:
캡슐화하는 역할을 하는 클래스를 VO 혹은 DTO라고 한다.

DAO(Database Access Object): DB 접근 객체

  • DB 처리를 전담한다.
  • 배열이 저장소역할을 한다.
  • DB에서 저장하고 수정하고 삭제하는 역할을 한다.

주소록을 추가한다하면,
Person 객체에 정보를 담아서 배열에 추가를 한다.
삭제 기능이다 하면, 배열에서 빼고!

service : 비즈니스 로직 구현, 사용자에 기능 제공

왜 이렇게 나눠서 짤까?
객체 지향을 한다는거는 사이즈가 큰 프로그램을 한다는 것인데,

  • 쉽게 개발
  • 유지보수

하려고 하다보니 나눠서 짜게됨

코드를 독립적으로 짜는게 좋은 코드!

0개의 댓글