본문 바로가기
개발일지/Java(자바)

객체지향 프로그래밍

2022. 1. 23.

객체지향 프로그래밍(Object Oriented Programming)이란

문제를 여러 개의 객체 단위로 나눠 작업하는 방식을 말한다.

객체지향 프로그래밍의 가장 큰 특징은 클래스를 이용해 연관 있는 처리부분(함수)과 데이터 부분(변수)를 하나로 묶어 객체(인스턴스)를 생성해 사용한다는 점이다.
그리고 객체지향 프로그래밍에서는 프로젝트를 독립적인 객체 단위로 분리해서 작업할 수 있기 때문에  여러 개발자와 협업해 규모가 큰 프로젝트를 진행할 수 있으며 유지보수측면도 뛰어나다는 장점이 있다.


장점

- 코드 재사용이 용이하다

다른 사람이 만들 클래스를 가져와서 사용할 수 있고 상속을 통해 확장해서 사용할 수 있다.

- 유지보수가 쉬움

절차지향 프로그래밍에서는 코드를 수정해야할 때 일일이 찾아 수정해야하는 반면 객체 지향 프로그래밍에서는

수정해야할 부분이 클래스 내부에 멤버 변수 혹은 메서드로 존재하기 때문에 해당 부분만 수정하면 된다.

- 신회성이 높은 프로그래밍을 가능하게 한다.

제어자와메서드를 이요해서 데이터를 보호하고 올바른 값을 유지하도록 하며, 코드의 중복을 제거하여 코드의 불일치로 인한 오작동을 방지할 수 있다.

 

단점

- 처리속도가 상대적으로 느리다.

- 객체가 많으면 용량이 커질 수 있다.

- 설계시 절차지향에 비해 많은 시간이 필요하다.

 

 

객체 지향 프로그래밍의 키워드 5가지

1) 클래스 + 인스턴스(객체)

  • 어떠한 객체의 상태를 나타내는 변수와 행동을 나타내는 메소드의 집합
  • 객체를 정의하는 틀, 설계도
  • 인스턴스(객체)란 클래스에서 정의한 것을 토대로 실제 메모리상에 할당 된 것이다.
  • 클래스로부터 객체를 선언하는 과정을 클래스의 인스턴스화 라고 한다.

2) 추상화

  • 불필요한 세부 정보는 숨기고 객체의 관련 속성 만 '표시'한다.
  • 즉, 공통의 속성이나 기능을 묶어 이름을 붙이는 것.

3) 캡슐화

  • 변수와 함수를 하나로 묶는 것을 뜻한다.
  • 코드를 재수정 없이 재활용하고 접근제어자를 통한 정보를 은닉하는 것
  • 캡슐화를 통해 관련된 기능과 특성을 한 곳에 모으고 분류하기 때문에 재활용이 원활해지는 효과가 있다.

4) 상속

  • 조상 클래스의 속성과 기능을 그대로 물려받아 사용할 수 있고, 기능의 일부분을 변경해야 할 경우 상속받은 자식 클래스에서 해당 기능만 다시 수정하여 사용할 수 있다.

5) 다형성

  • 조상클래스 타입의 참조변수로 자손클래스의 인스턴스를 참조할 수 있도록 한 것이다.
  • 오버라이딩 : 조상 클래스로부터 상속받은 메소드의 내용을 변경하는 것을 오버라이딩이라고 한다.
  • 오버로딩 : 같은 이름의 함수를 여러개 정의하고 매개변수의 타입과 개수를 다르게 하여 매개변수에 따라 다르게 호출할 수 있도록 하는 것.

 

 

 

 

참고자료
https://webclub.tistory.com/155 [Web Club]

https://jeong-pro.tistory.com/95

https://velog.io/@jacob0122/%EA%B0%9D%EC%B2%B4-%EC%A7%80%ED%96%A5-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%EC%9D%B4%EB%9E%80