[JAVA] OOP(Object-Oriented Programming) 객체지향프로그래밍

고지훈·2022년 1월 24일
0

Java

목록 보기
1/3
post-thumbnail

OOP란?

OOP란 객치지향적인 프로그래밍, 즉 C언어와 같이 절차지향적인 프로그래밍이 아닌 객체의 관점에서 프로그래밍을 한다는 것이다.

OOP는 객체를 기준으로 코드를 나누어 구현한다. 자바의 경우 그 구성 부분 단위가 클래스이다. 자세히 말하면 클래스는 설계도이고, 직접 일을하는 구현체는 인스턴스다.

  • OOP는 객체의 관점에서 프로그래밍을 하는 것을 의미한다.
  • C언어는 절차지향프로그래밍인데, 절차지향프로그래밍은 프로세스가 함수 단위로 순서대로 진행되는 것을 의미한다.
  • OOP는 절차지향에 비해 사람의 사고방식과 더 가깝다.
  • OOP는 객체들의 유기적인 관계를 통해 프로세스가 진행된다.
  • 어플리케이션을 구성하는 요소들을 객체로 바라보고, 객체들을 유기적으로 연결하여 프로그래밍을 하는 것을 의미한다.

OOP의 특징

[캡슐화]

  • 하나의 객체에 대해 그 객체가 특정한 목적을 위한 필요한 변수나 메소드를 하나로 묶는 것을 의미한다.
  • 따라서 클래스를 우리가 만들 때 훗날 이 클래스에서 만들어진 객체가 특정한 목적을 잘 수행할 수 있도록 사용해야할 변수와 그 변수를 가지고 특정한 메서드를 관련성 있게 클래스를 구성해야한다.

[정보은닉]
캡슐화를 하는 중요한 목적은 정보은닉이다. 유저 정보를 가지고 있는 User라는 객체에서 유저의 정보가 public으로 선언되어있다면, 해당 정보를 변경할 수 있다. 그렇기 때문에 private로 설정하여 데이터의 접근을 방지해야한다.

이렇게 보호된 변수는 getter나 setter등의 메서드를 통해서 간접적으로 접근이 가능하도록 하는 것이 캡슐화의 목적이다.

[추상화]
추상화는 목적과 관련이 없는 부분을 제거하여 필요한 부분만 표현하기 위한 개념이다.

세상이 있는 것을 본따 클래스를 만들고 그 클래스의 상태와 행동을 부여한 객체를 만든다. 그러나 세상에 모든 것을 다 클래스에 담고 객체를 만드는 것은 불가능하다. 그래서 추상적으로 생각해 일단 큰 틀의 클래스를 구현하고 거기에 공통적인 요소나 필수적인 요소는 들어갔으면 하는 바램에서 만든것이 추상클래스이다.

[다형성]
다형성은 상속을 통해 기능을 확장하거나 변경하는 것을 가능하게 해준다. 다형성은 형태가 같은데 다른 기능을 하는 것을 의미한다.(같은 동작이지만 다른 결과물이 나올때 다형이라고 생각하자!)
이를 통해 코드의 재사용, 코드 길이가 감소되어 유지보수가 용이하도록 도와준다.

[Override & Overload]
OOP에서 다형성의 개념을 녹여내는 방법은 두 가지인데, 오버라이딩과 오버로딩이 있다.

  • 오버라이딩
    • 부모클래스를 상속받은 자식클래스에서 부모클래스의 메서드를 재정의하여 사용하는 것을 의미한다.
  • 오버로딩
    • 같은 이름의 메서드를 사용하지만 메서드마다 다른 용도로 사용되며 결과물도 다르게 구현할 수 있는 개념
    • 오버로딩을 가능하게 하려면, 메서드의 이름은 같지만 매개변수의 개수나 데이터 타입이 다르면 오버로딩이 적용된다.

[상속성, 재사용]

  • 상속이란 기존 상위클래스에 근거하여 새롭게 클래스와 행위를 정의할 수 있게 도와주는 개념이다.
  • 기존 클래스에 기능을 가져와 재사용할 수 있으면서 동시에 새롭게 만든 클래스에 새로운 기능을 추가할 수 있게 만들어준다.
profile
"계획에 따르기보다 변화에 대응하기를"

0개의 댓글