Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
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
Tags
more
Archives
Today
Total
관리 메뉴

개발새발

OOP(Object Oriented Programming) 본문

자바

OOP(Object Oriented Programming)

개발하는후추 2022. 10. 24. 15:06

OOP(Object Oriented Programming)이란

여러 개의 문제를 객체 단위로 나누어 객체들이 서로 유기적으로 상호작용하는 프로그래밍 이론이다.

대표적으로 Java, C++ C#등이 있다

프로그래밍에서 객체란?

- 데이터의 분산을 막기 위해 데이터와 기능을 하나로 묶은 그룹을 말한다.

- 자바의 경우 그 구성 부분 단위가 클래스

장점

  •  코드의 재사용성 증가 - 상속을 통해 프로그래밍 코드의 재사용성을 높일 수 있다.
  • 생산성 향상 - 잘 설계된 클래스를 만들어 독립적인 객체르 사용함으로써 개발의 생산성을 향상시킬 수 있다.
  • 자연적인 모델링 - 우리 일상생활의 모습의 구조가 객체에 자연스럽게 녹아들어 있기 때문에 생각하고 있는 것을 그대로 자연스럽게 구현 할 수 있다.
  • 유지보수 - 프로그램 수정시 캡슐화를 통해 주변 영향이 적기 때문에 유지보수가 쉽다.

단점

  • 개발속도가 느리다 - 객체가 처리하려는 것에 대한 정확한 이해가 필요하기에 선계단계부터 많은 시간 소모된다.
  • 실행속도가 느리다 - 객체지향언어는 대체적으로 실행속도가 느리다.
  • 난이도 증가 - 객체지향적인 코드를 짜기위해 학습이 필요하며 난이도가 높다.

특성

캡슐화 (Encapsulation)

캡슐화란

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

정보은닉

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

추상화 (Abstraction)

추상화는 목적과 관련이 없는 부분을 제거하여 필요한 부분만을 표현하기 위한 개념이다. 추상화는 객체들의 공통된 특징을 파악해 정의해 놓은 설계 기법

개념설명

세상에 있는 것을 본따 클래스를 만들고 그 클래스의 상태와 행동을 부여한 객체를 만든다.

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

다형성(Polymorphism)

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

개념설명

예를 들면, 고양이 클래스에는 울음이라는 속성이 정의되어 있다고 하면,
사자는 고양이 과이기 때문에 사자 클래스는 고양이 클래스를 상속 받는다고 하면, 사자 클래스도 "울음"이라는 속성이 자동으로 추가된다.
이것을 상속이라고 한다. 그런데 고양이와 사자의 울음소리는 다르다. 같은 "울음" 속성임에도 실제 울음소리는 다르다. 이런것이 다형성이라고 말할 수 있다.

상속성(Inheritance)

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

개념정리

실제 세계에서 부모로부터 여러 가지를 상속을 받는데, OOP에서도 가능하다. OOP에서 이를 부모 클래스, 자식클래스라고 표현한다.

예를들어, 고양이 클래스와 강아지 클래스가 있다고 했을때, 고양이와 강아지는 모두 포유류에 해당한다.
포유류는 여러 속성들이 정의되어 있는데 고양이와 강아지는 포유류의 이런 속성들을 갖고 있다.
하지만 아주 많은 속성이 다르기 때문에 좀 더 디테일하게 고양이, 강아지로 종을 나눈것이다.

즉. 포유류라는 클래스는 고양이와 강아지 클래스에 속성들을 물려준다. 이것을 상속이라고 하고, 포유류와 고양이 포유류와 강아지 클래스는 상속 관계에 있다고 한다.

상속이 필요한 이유

상속이 필요한 이유는 코드의 중복을 없애기 위함이다.
코드의 중복이 많아지면 개발 단계에서도 피곤하지만, 유지 보수에서도 많은 비용이 들게 된다.
그래서 개발을 할때 코드의 중복은 받느시 피해야한다.

'자바' 카테고리의 다른 글

List, Set, Map  (0) 2022.11.03
제네릭  (0) 2022.10.31
재귀함수 #for문  (0) 2022.08.04
#재귀  (0) 2022.08.03
#InputStream, OutputStream #Thread(스레드) #Multi-thread(멀티 스레드)  (0) 2022.08.03
Comments