캡슐화(Capsulation)




캡슐화는 목적이 객체의 기능 보호에 있다.

만일 어떤 메소드나 필드가 항상 모두에게 공개되어 있다면, 입력 시킨 값이나 메소드의 내용을 누구나 가져가서 사용할 수 있고, 수정할 수

있게 되므로, 보안에 취약한 형태가 될 수 밖에 없다.

따라서, 외부 객체가 호출하거나 읽고 쓸 수 있는 메소드, 필드의 범위를 접근 제한자를 통해서, setter,getter 메소드를 통해서 정해 줄 수 있는

기능을 가질 필요가 있다.



접근 제한자 (Access Modifier) 




public : 모든 클래스에서 접근 가능한 필드, 메소드.

protected : 자신과, 상속받은 자식 클래스에서만 접근 가능한 필드 메소드.

default : 같은 패키지 내의 클래스에서만 접근 가능한 필드 메소드.

private : 자신만 사용 가능한 필드, 메소드


http://book.naver.com/bookdb/book_detail.nhn?bid=10338797




자바스크립트 언어에 대해 설명해 놓은 책이다.


저자는 MIT 컴퓨터 과학 학위, 공학 학위를 받았다고 한다. 



책 내용이 아주 많고 자세하게 설명되어 있는것 같아서 구매했다.


신판은 6판이지만 먼저 5판을 중고로 구했다. 혹시 필요하게 되면 새로 사야 할 것 같다.



'프로그래밍 > JavaScript' 카테고리의 다른 글

[Node.js] Node.js 는 무엇인가?  (0) 2018.08.13
JavaScript 기초 문법 정리 (3)  (0) 2018.06.26
JavaScript 기초 문법 정리 (2)  (0) 2018.06.26
JavaScript 기초 문법 정리 (1)  (0) 2018.06.25


다형성 (polymorphism)


객체 지향 프로그래밍에서, 같은 타입이지만, 다양한 객체를 같은 타입처럼 이용할 수 있는 성질.

하나의 타입 Bread = new Doughnut(); 다른 객체로 대입이 가능하다.

먼저 이러한 성질을 사용하기 위해서는, 인터페이스와 상속의 개념이 꼭 필요하다.

다형성을 위해서 자바에서 갖추고 있는 기능은, 부모 클래스와 인터페이스의 타입 변환이 가능하다는 점이다.

부모 타입 <=== 자식 타입

인터페이스 타입 <== 모든 구현된 클래스(객체)

이 다형성의 효과로 객체를 마치 기계의 부품처럼 사용할 수 있는 장점이 생긴다.

예) 자동차의 타이어는 어떤 타이어든 호환만 된다면 모두 장착 할 수 있는 것과 비슷하다.



다형성과 관련된 부분들


타입 변환 : 같은 타입이지만, 실행 결과가 다양해질 수 있는 객체를 이용할 수 있다는 성질.


하나의 타입에 여러 객체를 대입함으로써 다양한 기능을 이용할 수 있도록 해줌.


즉 객체를 부품처럼 이용하는 것이 가능해짐.


자식 클래스 타입을 부모 클래스 타입으로 변환하는 것이 가능하기 때문에, 이것이 가능하다.


자동 타입 변환 : 부모 클래스 타입의 변수가 자식 클래스 타입 객체를 참조하면 자동으로 부모 클래스 타입으로 변환이 되는 것.


자동 타입 변환이 일어날 수 있는 이유는, 자식 클래스는 부모 클래스의 특징과 기능을  상속 받아서 만들어졌기 때문에 가능한 것.


또한 상속 계층에서 상위 타입이면 무조건 자동 타입 변환이 일어날 수 있다. (부모가 아니라 2단계 상속 받은 상태라도 변환 가능)


메소드 오버라이딩 : 메소드가 자식 클래스에서 오버라이딩 되었을 경우에는, 자식 클래스의 메소드가 호출된다.


한번 자식 클래스에서 변환된 메소드는 타입 변환 후에도 항상 자식 클래스의 메소드로 호출된다.



메소드 오버로딩 : 메소드 오버로딩은 같은 이름의 메소드가 입력 받는 값에 변화를 주어 동작할 수 있는 가능성을 더 여러가지로


가질 수 있게 해주는 기능이다. 이 역시 다형성의 측면에서 행동하는 기능이라고 생각 할 수 있다.


만일, 오버로딩이 존재하지 않는다면 하나의 이름을 가지는 메소드는 오직 정해진 타입, 갯수의 변수 만을 받을 수 밖에 없는 형태


이기 때문에, 자유도적인 부분에서 상당히 떨어질 수 밖에 없다.


































+ Recent posts