Programming Language/Java

객체지향 프로그래밍(Object Oriented Programing)

DongHo 2023. 5. 17. 02:01

절차 지향 프로그래밍(Procedural Programming)

- 객체지향 언어 개념이 나오면서 기존 프로그래밍 방식을 표현하기 위해서 사용했습니다.
- 큰 틀은 일렬의 동작(모듈, 함수)를 순서에 맞게 단계적으로 실행합니다.
- 데이터와 속성보다는 명령어의 순서와 흐름에 포커싱 합니다.
- 소프트웨어 규모가 커지면서 기능들이 복잡해지면서 추가 개발이나 유지보수의 어려움의 한계를 갖습니다.
- 절차적 프로그래밍 / 구저적 프로그래밍

 

객체지향 프로그래밍(Object Oriented Programing)

- 클래스를 생성하고 클래스로부터 객체를 만들어 객체 간의 상호작용을 이용하여 주어진 문제를 해결하는 프로그래밍 방식입니다.
- 데이터인 필드와 절차인 메소드를 하나로 묶은 클래스 단위의 프로그램입니다.
- 현실 세계를 객체 단위로 프로그래밍하여, 객체는 필드(데이터)와 메서드(코드)를 하나의 블럭으로 묶어서 표현합니다.

 

클래스

- 객체를 만들기 위한 모형이자 틀(template)입니다.
- 객체를 만들려면 반드시 객체의 다양한 특성을 표현할 수 있는 모형인 클래스가 필요합니다.

 

객체

-  클래스의 구체적인 하나의 실례(instance)
- 객체와 클래스의 예입니다.

 

 

객체지향 언어의 4가지 특징

1. 추상화(Abtraction)

- 현실 세계의 사실에서 주어진 문제의 모델링(중요한 측면을 주목하여 설명하는) 방식입니다.
- 실세계의 객체에서 불필요한 부분을 제거하여 필요한 부분만을 간결하고 이해하기 쉬운 클래스로 만드는 작업입니다.
- 속성과 행동으로 추상화를 실현합니다.

2. 캡슐화(Encapsulation)

- 객체와 객체간의 의사소통을 위한 정보만을 노출합니다.
    - 실제 내부 구현 정보는 숨기는 원리입니다.
- 추상화 과정에서 클래스를 정의 할 때
    - 객체의 자료와 행위를 클래스 단위로 하나로 묶고, 실제 내부를 구현하고, 내용을 외부에 감추는 것을 뜻합니다.

정보은닉(Information Hiding)이 발생합니다.
- 캡슐화 과정에서 클래스 내부 구현을 외부에 숨깁니다.
- 내부에서 일어나는 일은 관심이 없습니다.

3. 상속(Inheritance)

'물려받는다'라는 특징이 있습니다.
- 객체 지향의 가장 핵심이 되는 개념입니다.
- 프로그램이을 쉽게 확장할 수 있도록 해주는 강력한 수단입니다.
- 상위 클래스와 하위 클래스 간의 관계 : 계층도

상속의 장점
- 공통의 특성을 하위 클래스마다 반복적으로 기술하지 않고, 한 번만 기술하기 때문에 중복을 줄여 재상용성의 효과가 있습니다.

4. 다향성(Polymorphism)

- 원래 생물학적 용어로 여러(poly) 형태(morphy)를 의미합니다.
- 외부에 보이는 모습은 한 가지 형태이지만 실질적으로 쓰이는 기능은 여러 가지 역할을 수행한다는 의미입니다.

ex)
- 오버로딩(overloading) : 'System.out.println()'과 유사합니다.
- 오버라이딩(overriding) : 상속에 더 근접하다고 말할수 있습니다.

'Programming Language > Java' 카테고리의 다른 글

상속(Inheritance)  (0) 2023.05.17
클래스(Class) & 객체(Object)  (0) 2023.05.17
HashMap 주요 메소드  (0) 2023.05.17
HashSet 주요 메소드  (0) 2023.05.17
ArrayList 주요 메소드  (2) 2023.05.17