Java | OOP

DoItDev·2022년 3월 5일
0
post-thumbnail

Overview

OOP란 Object Oriented Programming 의 약자로 현실 세계의 개체를 기계의 부분 처럼 하나의 객체로 생성하는 것을 의미한다. 객체를 조립해서 프로그래밍 하는 기법을 의미한다.

OOP에서 4가지 특징을 가지고 있다. 추상화, 상속화, 캡슐화, 다형성이라는 특징을 가진다.

  1. 추상화
  • 목적과 관련 없는 부분을 제외하고 필요한 부분만 포착해서 사용하는 기법
  • 객체의 공통된 속성들을 중 필요한 부분을 포착해서 클래스로 정의
  1. 캡슐화
  • 외부의 노출할 필요없는 속성의 경우 은닉화 해서 객체에 표기하는 것이다. 정보의 은닉이라고 할 수 있다.
  1. 상속
  • 부모 클래스가 자식 클래스에게 속성을 물려주는 것이다. (오버로딩)
  • 코드의 재사용성의 용의하다
  1. 다형성
  • 같은 형태지만 다른기능을 하는 것을 의미한다. (오버라이딩)

추상화

추상화 클래스를 이용해서 추상화를 시킨다.

tv라고하는 공통으로 사용하는 객체에 대하여 기능을 정의 해준다.

채널과 시리얼 번호 그리고 채널에 대한 액션(up,down) 그리고 확인 버튼 이렇게 기능을 정의를 할 수 있다.

하지만 tv라는 한 주체의 경우 현실에서 삼성, LG, 애플에서 티비를 만든다. 그렇기 때문에 각각 공통적인 기능이 필요하다고 볼 수 있다.

코드를 보면서 자세하게 보자

애플, lg 라는 회사에서 tv를 만든다고 했을때 공통적으로 가지는 기능의 경우 체널에 up, down, 확인 기능을 공통적으로 가진다. 그리고 시리얼 넘버, 채널을 공통적으로 가진다고 가정을 하자

그리고 추상화 클래스에서 기능 및 필드를 명시를 해주었다.

- upChannel() : void  
	- 채널 올라가는 기능
- downChannel() : void
	- 채널이 내려가는 기능
- callChannel() : void
	- 체널을 확인하는 기능 
- serialNum : string
	- 시리얼 번호
- channel
	- 체널

아래의 Lg 그리고 애플을 재정의 해준다. 각각의 기능의 경우 회사별로 다르기 때문에 각각 명시를 해주면 된다.

위 와같이 Main 클래스에 인스턴스화 하여 사용을 해서 기능을 사용하면 위와 같이 정의 된다.

캡슐화

캡슐화의 경우 정보은닉을 위하여 사용을 한다.

java 에는 접근제한자가 있는데 private, public, protected, default 이렇게 4가지가 있다.

접근제한자설명
public모든 접근을 허용
protected같은 패키지 내에서 객체에서 허용 과 상속관계 객체에서 사용이 허용
default같은 패키지 내에서 객체만 허용
private현재 객체내에서만 허용

캡슐화의 경우 정보의 은닉이 필요하기 때문에 private 를 사용해서 클래스 내에서 필드를 접근할 수 있게 하며 get을 통해서만 접근이 가능하게 캡슐화를 하였다.

상속

상속의 경우 예제로 학생이라는 큰분류가 있다면 작은분류로 여자, 남자 성별로 나누려고 한다.

그렇다면 객체 설계를 해보려고 한다. 일단 만약에 우리가 공통으로 사용을 하는 분류를 큰분류인 학생에 넣어준다. 그리고 난뒤 여자, 남자 별로 특징적인 부분을 각각 넣어주면 된다.

학생이라는 큰분류에서 eat, work 를 정의를 해준 뒤 오버라이드(재정의) 해서 남자, 여자를 찍어 보았다. 이렇게 오버라이드의 경우 부모의 함수를 재정의 하는 것을 의미를 한다.

다형성

다형성(오버로딩)의 경우 몇가지 조건이 갖추어야 한다.

  1. 생성자 혹은 메서드 명이 같아야한다.
  2. 인자의 타입, 순서가 달라야 한다.
  3. 메소드의 경우 리턴값이 다르면 성립이 되지 않는다.

빨간색 박스의 경우 생성자 오버로딩이 가능하다 같은 이름이지만 인자가 다르고, 순서가 다르기 때문이다.

노란색 박스의 경우 이름과 리턴값이 같지만 인자가 다른 타입을 가지기 때문에 오버로딩이 된다.

profile
Back-End Engineer

0개의 댓글