【YouTube】아다치켄 Java 프로그래밍 입문 강좌 -오브젝트 지향을 이해한다-【정리】

오브젝트 지향을 복습하는데 있어서 참고로 한, 게이오 기주쿠대학의 오노 마사유모토 조교수에 의한 아다치 연 세미나 가 매우 알기 쉬웠으므로 요점을 자신 나름대로 정리하고 싶습니다.

객체 지향



원래 왜 객체 지향이 중요한가?
- 인기있는 프로젝트 언어는 대부분 객체 지향의 개념을 도입하고 있기 때문에
- 큰 프로젝트나 여러 사람이 프로젝트를 움직일 때 매우 편리하기 때문에

클래스와 인스턴스



개체 = 모든 것
e.g.) 내 차, 오노 선생님의 넥타이, 신쇼 츠요시의 치아, 사과, 변기

클래스 = 물건의 카테고리
인스턴스 = 클래스 아래에 들어가는 것
e.g.) 클래스 = 개 인스턴스 = 치코 짱 (오노 선생님의 개), 시라도 지로, 파트라 쉬
e.g.) 클래스 = 사람 인스턴스 = 오노 마사히로, 버락 오바마, 바보의 사카타


캡슐화



액세스 한정자
- public 외부에서도 참조 가능
- protected 동일 클래스, 동일 패키지, 서브 클래스로부터의 참조 가능
- default 같은 클래스, 같은 패키지로부터의 참조 가능
- private 같은 클래스로부터의 참조 가능
즉 재기록되고 싶지 않은 정도에 의해 액세스 수식자를 구분하는 것이 필요.
필요한 정보를 은폐해, 메소드를 통해서 밖에 정보에 액세스 시키는 것을 캡슐화라고 합니다.

클래스 상속



클래스의 계층 구조
슈퍼 클래스
e.g.)
Animal

서브 클래스
e.g.)
1. Dog
2. Cat

인스턴스
e.g.)
1-1. 치코짱
1-2. 시라도 지로
1-3. 파트라쉬
2-1. 미미
2-2. 히코냥
2-3. 미야로메

class Dogclass Cat 의 슈퍼 클래스로서 class Animal 를 선언하고 싶을 때는 extends 를 사용해,
class Animal {
~~
}
class Dog extends Animal {
~~
}
class Cat extends Animal {
~~
}

그러면 각 클래스가 연결됩니다.

왜 이러한 계층 구조가 필요한가?
class Animal 에서는 다음과 같은 특징이 있다고 합니다.
- 눈이 2개
- 꼬리가 하나
- 다리가 4개
이러한 정보는 공통항으로서 서브 클래스에도 적응할 수가 있습니다.
그러나 class Dog 에서는 class Cat 에 없는 다음의 특징을 추가한다고 합니다.
- 사람 그리운
- 한번 울린다.
반대로 class Cat 에는 class Dog 에 없는 다음 특징을 추가합니다.
- 높은 점프
- 냐와 소리

계층 구조를 갖게 함으로써 이러한 공통 항목으로 하는 것과 독자적인 항목으로 하는 것으로 구분하여 취급하기 쉽게 할 수 있게 됩니다.

폴리모피즘과 재정의



폴리모피즘이란 일정한 형태를 준비해, 그 형태안에 들어가는 인수에 의해 다른 동작을 구현하는 방법입니다.
위의 예를 사용하면,

animal.java
class Animal {
~~
public abstract void poke (); //pokeの中身はabstractをつけることで空になっている
~~
}


dog.java
class Dog {
~~
@Override //abstractをつけたスーパークラスの抽象メソッドをこちらのサブクラスで実装
public void poke (){
  makeSound(); //ワンッと鳴く
  say(); //何かしらメッセージを入れる
}
}

요약



이상, 이번에는 게이오 기학 대학의 오노 마사히로 전 조교수에 의한 강의 「아다치 연 세미나」를, YouTube를 참조하면서 정리했습니다.

좋은 웹페이지 즐겨찾기