본문 바로가기
Study/Java

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

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

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

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

 

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

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

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

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

 

객체란 무엇일까?

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

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

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

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

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

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

 

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

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

 

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

캡슐화(Encapsulation)

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

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

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

 

상속(Inheritance)

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

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

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

추상화

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

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

 

다형성(Polymorphism)

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

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

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

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

 

 

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

728x90
반응형

댓글