Study/Java

[Java] 객체지향 프로그래밍 (OOP)

오늘만 사는 여자 2024. 1. 21. 12:57
728x90
반응형

오늘은 오랜만에 자바를 정리해보려고 한다.

그동안 그냥 물흐르듯 개발을 했는데 다시 한번 로직을 일깨우려고 합니다. 

 

1. 객체지향 프로그래밍(Object Oriented Programming)

- 자바는 대표적인 객체지향 프로그래밍 언어다.

- 실제 세계를 객체라는 단위로 나누고 객체들간의 상호작용을 의미한다.

- 즉, 프로그램을 여러개의 독립된 단위인 객체들의 모임으로 파악하고자 하는 것이다.

 

객체란 무엇일까?

- 객체(Object)는 우리 주변에 있는 모든 것이 될 수 있다.

- 예를 들어, Tv, 컴퓨터, 책, 건물, 의자, 사람 등 모든 것이 객체가 될 수 있다.

- 객체는 자신만의 고유한 특성과 행동을 가지며 다른 객체들에게 행동을 요청하거나 정보를 주고 받는 등 상호작용을 함녀서 존재한다.

- 객체는 크게 속성(필드)와 동작(메소드)로 구성되어 있다.

  - ex) 학생의 속성 : 이름 , 학년, 학번 등

  - ex) 학생의 동작 : 공부하다, 밥먹다, 놀다 등

 

2. 객체지향 프로그래밍과 절차지향프로그래밍의 차이

  객체지향프로그래밍 절차지향프로그래밍
처리방식 문제를 여러개의 객체로 나누어 처리 문제를 여러개의 함수로 나누어 처리
장점 - 코드 재사용이 용이하다.
- 유지보수 쉽다
- 대형 프로젝트에 적합
- 처리 속도가 빠르다
- 실행 속도가 빠르다
단점 - 처리속도가 상대적으로 느리다
- 객체가 많으면 용량이 커진다.
- 설계시 많은 시간과 노력이 필요하다.
-유지보수가 어렵다
- 대규모 프로젝트에 부적합하다
Java, Python, C# 등 c언어

 

3. 객체지향 프로그래밍 특징

캡슐화(Encapsulation)

- 캡슐화란 관련된 필드와 메소드를 하나로 묶고 실제 구현내용을 외부로 부터 감추는 기법으로 정보 은닉할 수 있다.

- 외부에서는 공개된 메소드를 통해 접근할 수 있다

- 캡슐약을 생각해보면 이해하기 쉽다. 캡슐에 든 약은 어떤 성분인지 어떤 색인지 보이지 않으며 외부의 접근으로부터 안전한 상태과 같다.

 

상속(Inheritance)

- 상속이란 상위 클래스의 모든걸 하위 클래스가 이어 받는 것이다.

- 즉, 이미 작성된 클래스(상위클래스(의 특성을 그대로 이어받아 새로운 클래스(하위 클래스)를 생성하는 기법이다.

- 상속이 필요한 이유는 코드의 중복을없애기 위함이다. 코드의 중복이 많아지면 개발단계와 유지보수에서 많은 비용이 소요되기 때문에 코드 중복은 피하는 것이 좋다.

추상화

- 추상화는 객체에서 공통된 속성과 행위를 추출하는 기법이다.

- 다시 말해 실제 존재하는 객체들을 프로그램으로 만들기 위해 공통적인 특성을 파악하고 불필요한 특성을 제거하는 과정을 말한다.

 

다형성(Polymorphism)

- 사전적 의미로는 다양한 형태로 나타날 수 있는 능력을 의미한다.

- 다형성은 같은 이름의 메소드를 호출하더라도 객체에 따라 다르게 동작하는 것을 말한다.

- 상위 클래스의 동작을 하위 클래스에서 다시 정의하여 (오버라이딩)하는 것 또 한 다형성으로 볼 수 있다.

- 하나의 클래스 내에서 이름은 같지만 서로 다르게 동작하는 메소드를 여러개 만드는 오버로딩 또한 다형성의 사례로 볼 수 있다.

 

 

참고 : https://danmilife.tistory.com/17

728x90
반응형