반응형

[Oracle Java Tutorial을 읽고 순서에 의해 정리한 후 본인의 경험과 이해를 바탕으로 작성된 글임을 밝힌다.]

[Java Tutorial, 자바 프로그래밍 기초 배우기, Java Programming, 자바 튜토리얼]

이제 객체와 클래스가 무엇인지 이해가 되었을 것이다. 객체는 상태와 행동을 가지고 있다. 데이터 캡슐화로 메서드 내부의 변수와 로직을 외부로부터 숨길 수 있다. 클래스는 이 객체를 만들 수 있는 틀(청사진)을 제공하는 것이다.

2019/06/08 - [Software/Java] - [Java_Tutorial]4강-자바 언어 배우기, 클래스란? [객체지향 프로그래밍 개념, 자바 프로그래밍 기초 , 자바 튜토리얼]

 

[Java_Tutorial]4강-자바 언어 배우기, 클래스란? [객체지향 프로그래밍 개념, 자바 프로그래밍 기초 , 자바 튜토리얼]

[Oracle의 Java Tutorial을 읽고 순서에 의해 정리한 후 본인의 경험과 이해를 바탕으로 작성된 글임을 밝힌다.] [Java Tutorial, 자바 프로그래밍 기초 배우기, Java Programming, 자바 튜토리얼, 객체지향 프로..

tiboy.tistory.com



3. 상속이란? (What is a Inheritance?)

여러분은 상속이 무엇인지 알 것이다. 일상생활에서 상속은 부모로부터 재산을 물려받을 때 상속이라는 단어를 사용한다. 객체지향 프로그래밍에서도 상속의 개념이 있다. 그럼 자바(Java) 프로그래밍에서 상속에 대해 알아본다.

이 전 글에서 우리는 보험사로 예를 들어 설명했다. 보험 상품은 다양하다. 실손보험(실비보험), 생명보험, 화재보험, 자동차보험 등등이 있다. 그리고 해당 보험에도 다양한 옵션의 상품들이 존재한다. 그럼 이들의 공통점이 무엇인지 살펴보자.

1. 보험 일련번호(코드)가 있다.


2. 신규 일자


3. 판매 종료 일자


4. 보험 종류 코드

우선 4가지만 생각해 보자. 4가지는 모든 보험에 공통적이면서 필수적인 정보이다. 물론 각 우선 4가지만 생각해 보자. 위 4가지는 모든 보험에 공통적이면서 필수적인 정보이다. 물론 각 보험마다 가지고 있는 옵션을 다를 것이다. 새로운 보험 그룹과 보험 상품을 만들기 위해서 관련 클래스를 만들어야 하는데 모든 보험상품이 공통으로 가지고 있어야 할 4가지 정보를 각 클래스마다 입력하는 것은 효율적이지 않다. 특히 객체지향 프로그래밍을 한다면 해서는 안 될 행동인 것이다. 이렇게 보험 상품 관련 클래스를 생성할 때 공통이면서 필수인 필드(변수)가 존재한다면 어딘가 자동으로 만들어 주면 편하지 않겠는가?

 

 



그래서 이 공통이면서 필수인 정보를 공유하기 위해 공통 클래스를 만든 뒤 상속해서 사용하면 된다. 이 공통 클래스를 슈퍼 클래스 (Super Class)라고 부른다. 이 슈퍼 클래스를 상속받은 하위 클래스는 (Sub Class)라고 부른다. 이렇게 슈퍼 클래스에 필수적인 필드(변수)와 메서드를 작성하고 서브 클래스에서 상속(Inheritance) 받아 사용하면 효율적이기도 하
고 모든 보험 상품의 필수 데이터와 행동을 사용하게 할 수 있는 것이다.

자바 프로그래밍에서는 주의해야 할 점이 있다. 보험 상품의 공통되며 필수인 필드와 메서드를 가지고 있는 슈퍼 클래스는 하나만 만들 수 있다는 것이다. 2개 이상을 만들어도 클래스는 1개의 슈퍼 클래스만 상속 받을 수 있기 때문에 의미가 없는 것이다. 사용할 수 없다. 모든 보험 상품의 필수 데이터와 행동을 사용하게 할 수 있는 것이다.

자바 프로그래밍에서는 주의해야 할 점이 있다. 보험 상품의 공통되며 필수인 필드와 메서드를 가지고 있는 슈퍼 클래스는 하나만 만들 수 있다는 것이다. 2개 이상을 만들어도 클래스는 1개의 슈퍼 클래스만 상속받을 수 있기 때문에 의미가 없는 것이다. 사용할 수 없다.

우선 보험 슈퍼 클래스를 만들어 본다.

이렇게 4개의 필드와 해당 필드를 입력하고 꺼낼 수 있는 메서드를 구현한 슈퍼 클래스를 이제 보험상품 클래스에서 상속해 보겠다. 상속을 할 때는 extends 키워드를 사용한다.

이렇게 상속받은 클래스 사용 방법은 추후 확인해 보고 우선 상속의 개념과 상속하는 방법에 대해 잘 이해하길 바란다.

InsGoodSubClass는 InsSuperClass의 같은 필드와 메서드를 상속받았고 사용할 수 있게 되었다. 상속으로 서브 클래스는 읽기 쉽게 되었지만 각 서브 클래스에서는 슈퍼클래스의 상태와 행위가 나타나지 않으므로 적절하게 문서화 작업을 할 수 있도록 주의해야 한다.

다음으로 객체지향 프로그램에서 필요한 인터페이스(Interface)에 대해 설명해 보겠다.

2019/06/10 - [Software/Java] - [Java_Tutorial]6강-자바 언어 배우기, 인터페이스(Interface)란? [객체지향 프로그래밍 개념, 자바 프로그래밍 기초 , 자바 튜토리얼]

 

[Java_Tutorial]6강-자바 언어 배우기, 인터페이스(Interface)란? [객체지향 프로그래밍 개념, 자바 프로그래밍 기초 , 자바 튜토리얼]

[Oracle의 Java Tutorial을 읽고 순서에 의해 정리한 후 본인의 경험과 이해를 바탕으로 작성된 글임을 밝힌다.] [Java Tutorial, 자바 프로그래밍 기초 배우기, Java Programming, 자바 튜토리얼] 2019/06/09 - [..

tiboy.tistory.com

객체, 클래스, 상속은 객체지향의 기본 개념이므로 잘 이해하는 게 중요하다. 혹시 그래서 어떻게 실전에서 사용해야 되는지 궁금하다면 앞으로 올라오는 글들을 꾸준히 읽어보면 도움이 될 것이다. 절대 포기하지 말고 같이 나아가길 바란다.

반응형
반응형

[Oracle Java Tutorial을 읽고 순서에 의해 정리한 후 본인의 경험과 이해를 바탕으로 작성된 글임을 밝힌다.]

[Java Tutorial, 자바 프로그래밍 기초 배우기, Java Programming, 자바 튜토리얼, 객체지향 프로그래밍]

2019/06/06 - [Software/Java] - [Java_Tutorial]3강-자바 언어 배우기, 객체란? [객체지향 프로그래밍 개념, 자바 프로그래밍 기초 , 자바 튜토리얼]

 

[Java_Tutorial]3강-자바 언어 배우기, 객체란? [객체지향 프로그래밍 개념, 자바 프로그래밍 기초 , 자바 튜토리얼]

[Oracle의 Java Tutorial을 읽고 순서에 의해 정리한 후 본인의 경험과 이해를 바탕으로 작성된 글임을 밝힌다.] [Java Tutorial, 자바 프로그래밍 기초 배우기, Java Programming, 자바 튜토리얼] 1강과 2강을..

tiboy.tistory.com

이제 객체가 무엇인지 이해가 되었을 것이다. 객체는 상태와 행동을 가지고 있다. 데이터 캡슐화로 메서드 내부의 변수와 로직을 외부로부터 숨길 수 있다.

2. 클래스란? (What is a Class?)

클래스(Class)는 블루 프린트(blue print)이다. 그리고 객체를 만드는 틀이다. 우리가 보험사 프로젝트를 시작했다고 하면 먼저 고객을 가입할 수 있는 구조를 만들어야 한다. 모든 고객은 보험사에서 필요한 정보를 가지고 있다.. 이름, 성별, 주민번호, 주소, 나이, 휴대전화 번호 등이 있을 것이다. 고객의 기준이 만들어지고 고객은 최소 1명에서 수십, 수백 그 이상이 존재할 수 있다. 이 고객 객체를 만들기 위해서는 위 속성(이름, 성별 등)을 가지고 있는 기본 틀이 있어야 된다. 그게 바로 클래스(Class). 실제 보험사에 고객이 가입도 하고 보험금을 청구한다고 가정해 본다.

 

 

오프라인에서 H사의 실손보험(실비보험)을 A 씨에게 판매해서 고객을 유치한 B 씨는 회사 전산 시스템을 이용해 A 씨를 고객으로 가입한다. 고객 등록 페이지에서 고객에 대한 정보인 이름, 주민번호, 성별, 주소, 휴대전화번호, 가입일자, 보험상품 등을 화면에 입력한다. 그리고 저장 버튼을 누른다. 해당 정보는 전산 시스템으로 전송되고 고객정보 클래스는 객체를 하나 생성한다. 화면에서 전달된 고객 정보를 객체의 메서드를 통해 필드(변수)에 매칭 된 필드(변수)를 이용해 보험사 전산 시스템의 데이터베이스(DB, DataBase)에 등록하는 기능을 수행한다. 이제 A 씨의 정보는 H사의 데이터베이스에 저장되었다. 이제 언제든 필요시 A 씨의 정보를 확인할 수 있게 되었다. 물론 확인 시에도 해당 객체를 생성하고 정보를 읽어 객체에 매핑 후 화면에 보여주면 된다. 5명의 보험설계사가 동시에 고객을 각각 가입시켜도 해당 고객 클래스의 객체는 5개가 독립적으로 만들어지고 각각 객체에 해당 고객들의 정보가 매핑되고 처리되므로 충돌의 문제는 발생하지 않는데 이것이 객체지향 프로그래밍의 장점 중 하나다.

그럼 보험사 고객 클래스를 예시로 간단하게 만들어 본다.

InsCustomer Class를 보면 main 메서드가 없다. 이유는 해당 클래스는 객체를 생성하기 위한 클래스이기 때문이다. Main 메서드가 있는 클래스는 프로그램의 시작을 담당한다고 했다. main 메서드에서 고객 클래스의 객체를 사용할 수 있는 것이다.

이제 클래스가 무엇인지, 객체가 무엇인지 이해했을 것이다. 우리가 사용한 클래스는 고객 정보를 관리하는 고객 클래스인 메인 메서드가 있는 실행 클래스인 InsSystem 이다.

객체는 InsCustomer에서 만든 customer 가 객체다.

InsCustomer customer = new InsCustomer();

이 구문으로 customer이라는 객체를 인스턴스화 한 것이다.

우리가 기능을 실행하거나 데이터를 처리하기 위해서 각 업무나 기능별로 클래스를 구성하고 관련 객체를 생성해서 시스템을 구성하면 된다. 우리가 자주 사용하는 프로그램은 보통 데이터 처리하는 게 대부분이다. 게임도 데이터 처리로 게임이 진행되는 것이다.

2019/06/09 - [Software/Java] - [Java_Tutorial]5강-자바 언어 배우기, 상속란? [객체지향 프로그래밍 개념, 자바 프로그래밍 기초 , 자바 튜토리얼]

 

[Java_Tutorial]5강-자바 언어 배우기, 상속란? [객체지향 프로그래밍 개념, 자바 프로그래밍 기초 , 자바 튜토리얼]

[Oracle의 Java Tutorial을 읽고 순서에 의해 정리한 후 본인의 경험과 이해를 바탕으로 작성된 글임을 밝힌다.] [Java Tutorial, 자바 프로그래밍 기초 배우기, Java Programming, 자바 튜토리얼] 이제 객체와..

tiboy.tistory.com

 

 

다음은 자바에서 필수로 알아야 할 상속에 대해 알아본다.

반응형