OOP에 대해서

2019-09-12

객체 지향 프로그래밍(OOP:Object Oriented Programming) 이란?

객체 지향 프로그래밍(이하 OOP)는 말 그대로 “객체(Object)”를 이용해서 프로그램을 설계하는 방법론 중 하나이다. 프로그램(실제세계)를 객체(사물)라는 기본 단위로 나누고 이 객체들간의 상호작용을 기본개념으로 한다.

OOP는 크게 4가지 특징을 가진다.

  1. abstraction(추상화)
  2. Polymorphism(다형성)
  3. Encapsulation(캡슐화, 은닉화)
  4. Inheritance(상속성)

객체란 무엇일까

객체란 주변에 존재하는 모든 사물, 생명체를 의미한다. 각자 상태와 행동을 가지고 있어 다른 것과 구별이 가능하고, 자바에서는 이 속성과 동작을 필드(field)와 메소드(method)라 부른다.


객체지향 VS 절차지향

OOP

자바는 100% 객체 지향 언어이다. 객체를 만들기 위해 설계도인 클래스를 작성해야 하고, 객체와 객체를 연결하여 목적에 맞는 프로그램을 만들어 낸다.


OOP의 특징

1. abstraction(추상화)

여러 객체들의 공통된 특성 묶어 상위개념으로 표현

중복된 부분들을 묶어 하나의 클래스로 정의하는 것을 말한다.

2. Polymorphism(다형성)

객체를 표현하는 다양한 방식이 존재

하나의 클래스, 메소드가 있을 때, 이를 재구성 하여 다양한 방식으로 사용할 수 있도록 하는 것을 의미한다. 하나의 메시지를 전달했을때, 수신자가 메시지의 형식에 따라 일을 수행할 메소드를 정하는 방식을 말한다.

Ex. 오버로딩, 오버라이딩

3. Encapsulation(캡슐화, 은닉화)

숨길 부분과 밖으로 드러낼 부분을 조절

Ex. 접근지정자(private, protected, public)

4. Inheritance(상속성)

부모객체를 상속해서 자식객체를 만듬.

자식 클래스가 부모 클래스를 상속 받으면 자식 클래스는 부모 클래스에서 접근 지정자에 의해 허용된 범위 내 메소드나 데이터에 접근이 가능하다. 상속을 통해 코드의 재사용에 유용하다. 하지만 특정 메소드 재사용만을 위해 상속을 받는 것은 클래스간 관계를 어지럽게 하기 때문에 지양해야 한다.

자바에서 다중상속은 허용하지 않는다. 하지만 interface를 implement해서 다중상속의 효과를 얻을 수 있다.

Ex. extends 키워드


참조

이것이 자바다. https://blog.naver.com/2feelus/220642212134 https://velog.io/@cyranocoding/%EA%B0%9D%EC%B2%B4-%EC%A7%80%ED%96%A5-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8DOOP-Object-Oriented-Programming-%EA%B0%9C%EB%85%90-%EB%B0%8F-%ED%99%9C%EC%9A%A9-%EC%A0%95%EB%A6%AC-igjyooyc6c