티스토리 뷰
클래스를 설계할 때는 프로그램에 들어가야 할 것과 그 프로그램이 어떤 역할을 하는지를 먼저 생각 해 봐야 합니다. 객체지향 프로그래밍에서프로그램에 들어가야 할 것은 객체가 자신에 대해 ‘아는 것’ 이라고 할 수 있습니다. 프로그램이 하는 역할은 객체에서 ‘하는 일’ 이라고 할 수 있습니다. 객체에서 아는 것을 인스턴스 변수라고 하고 객체에서 하는 것을 메소드 라고 합니다. 인스턴스 변수는 객체의 상태를 나타내고 메소드는 객체에서 할 수 있는 일을 나타냅니다.
간단하게 예를 들어 보겠습니다. Dog 라는 클래스를 만든다고 생각 해 보겠습니다. 현실세계에서 개는 더 많은 정보를 가지고 더 많은 행동들을 할 수 있지만최대한 단순화 해서 공통적인 기능만 뽑아 보겠습니다.
Dog 라는 클래스에서 Dog 객체에 대해 아는 것은 크기, 종, 이름 같은 것이 될 것이고 할 수 있는 것은 짖기, 놀기 같은 것이 될 것입니다.
이렇게 만들어진 Dog 클래스는 size, breed, name 이라는 인스턴스 변수와 bark(), play()라는 메서드를 가지고 있습니다.
그런데 여기서 유의해야 할 것은 클래스와 객체는 같은 의미가 아니라는 것입니다. 클래스는 객체를 만들어 내는 일종의 설계도 같은 것입니다. JVM에서는 클래스를 바탕으로 객체를 만들어 냅니다. 그렇기 때문에 같은 클래스를 가지고 여러개의 객체를 만들 수 있는 것입니다.
이렇게 클래스를 설계하고 클래스를 바탕으로 만들어진 객체들이 서로 대화하는것 결국 자바 애플리케이션이란 이렇게 만들어진 객체들간의 대화라고 할 수 있습니다.여기서 대화한 다는 것은 객체에서 서로 다른 객체의 메소드를 호출하는 것을 의미합니다.
마지막으로 객체 지향 프로그래밍의 대표적인 네가지 특징에 대해 살펴보고 마치겠습니다. 먼저 추상화가 있습니다. 추상화는 현실세계를 단순화 하여 공통적이고 필요한 정보만을 가지고 복잡성을 줄이는 것입니다. 가령 앞서서 만든 Dog 클래스를 생각 해 보면 현실세계의 개들 각각은 Dog 클래스 안에 다 담기에는 훨씬 더 많은 정보를 가지고 있을 것입니다. 하지만 Dog클래스는 size, breed, name 이라는 인스턴스 변수와 bark(), play() 라는 메서드를 통해 모든 개들이 공통적으로 가지고 있으면서도 우리에게 필요한 정보만을 가지고 Dog클래스를 구성했다고 할 수 있습니다. 상속 역시 객체지향 프로그래밍의 큰 특징입니다. 상속은 새로운 클래스가 이미 존재하는 클래스의 속성을 사용할 수 있게 해 줍니다. 다형성은 같은 모양을 가진 코드가 여러가지 기능을 할 수 있는 것을 의미합니다. 오버라이드가 한 예입니다. 마지막으로 캡슐화가 있습니다. 캡슐화는 보안을 위해 인스턴스 변수를 숨기는 것입니다.
'language > JAVA' 카테고리의 다른 글
상속(Inheritance)의 개념 (1) | 2019.01.17 |
---|---|
자바의 변수 원시타입변수 vs 참조타입변수 (1) | 2019.01.17 |
가비지 컬렉션(Garbage Collection)의 원리 (0) | 2019.01.17 |
자바 가상 머신(Java Virtual machine)의 작동 원리 (0) | 2019.01.17 |
자바의 작동 방식(자바가 돌아가는 구조) (1) | 2019.01.16 |
- Total
- Today
- Yesterday
- Markov
- 디자인패턴
- Spring in Action
- 몰라서망신
- 동적계획법
- 로그
- 유지보수
- GROUP BY
- RESTful
- html
- CONVENTIONS
- markov chain
- 자바스크립트 개론
- 크롬
- 코딩의 기술
- restful api
- 경고
- 문장 생성기
- was
- 자바스크립트개론
- java
- REST API
- Warning
- Count
- 마르코프 연쇄
- 전략패턴
- 야근
- 마르코프
- 클린코드
- DP
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |