본문 바로가기
JAVA/객체지향

자바의 객체지향적인 프로그래밍은 도대체 무엇인가? (OOP 원칙)

by 스코리아 2023. 8. 6.

안녕하세요. 스코리아입니다.

오늘은 자바(JAVA)의 객체지향적인 프로그래밍이 도대체 무엇이고 어떤 장점이 있으며, 어떻게 구현하는지 모두가 알기 쉽게 정리해 보겠습니다.

 

 

우선 객체 (Object) 란 무엇일까요?

  • 사전적인 의미로는 의사나 행위가 미치는 대상이라고 합니다.
  • 프로그래밍적인 의미로 봤을 때는 구체적, 추상적 데이터의 단위를 의미합니다. 예를 들면 회원, 생산, 주문, 배송 등을 객체라고 볼 수 있겠지요.

 

그렇다면 객체지향적인 프로그래밍 (OOP)이 무엇일까요?

  • 프로그램의 구현을 시간의 흐름순이 아닌 객체 간의 관계와 협력을 기반으로 하는 것을 의미합니다.
  • 여기서 프로그램의 구현으로 시간의 흐름순으로 설계하는 것을 절차 지향 프로그래밍이라고 합니다.

 

아침에 일어나 학교를 가는 과정을 예로 들어봅시다.

  • 절차 지향적인 프로그래밍의 경우 시간이나 사건의 흐름에 따라 프로그래밍을 진행하므로, 아래와 같이 순차적인 순서로 될것입니다.일어난다 -> 씻는다 -> 밥을 먹는다 -> 옷을 입는다 -> 지하철을 탄다 -> 요금을 지불한다 -> 지하철을 내린다 -> 학교 도착
  • 객체 지향적인 프로그래밍의 경우 어떻게 될까요? 아래 그림처럼 될 것입니다.

 

우리는 이러한 객체 지향적인 프로그래밍을 OOP (Object Oriented Programming)이라고 합니다. 반면 절차 지향 프로그래밍은 Procedural Programming이라고 합니다.

 

장점

객체 지향적인 프로그래밍, 즉 자바로 프로그래밍을 했을 때 장점은 무엇이 있을까요? 크게 3가지로 요약할 수 있습니다.

  • 재사용성
  • 유지보수에 용이
  • 신뢰성이 높은 프로그램 구현

 

구현 방법

객체 지향적인 프로그래밍을 구현하는 방법으로는

  1. 객체를 정의하고
  2. 각 객체 제공하는 기능들을 구현하고
  3. 각 객체가 제공하는 기능들 간의 소통을 통하여 객체 간의 협력을 구현합니다.

 

그러면 직접 객체를 한번 구현해 봅시다!

쇼핑몰 사이트에 있는 K라는 회원이 P라는 제품을 주문한다고 해봅시다.

여기서 객체는 어떤 게 있을까요? 회원, 제품, 주문 객체가 있다고 할 수 있습니다.

아래와 같이 클래스를 구현해 볼 수 있습니다.

 

  • 회원 클래스
public class UserInfo {
	String userId;
	String userPassword;
	String userName;
	String userAddress;
	int phoneNumber;
}
  • 제품 클래스
public class Product {
	int productId;
	String productName;
	int price;
}
  • 주문 클래스
public class Order {
	int orderId;
	String userId;
	int productId;
	String orderDate;
}

 

 

객체의 속성은 클래스의 멤버 변수 (Member Variable)로 선언합니다.

  • 여기서는 userId, userPassword 등이 멤버 변수라고 할 수 있겠습니다!

 

객체 지향적인 프로그래밍을 위해 클래스를 작성할 때의 규칙이 존재합니다.

  • 클래스는 항상 대문자로 시작하는 것이 좋습니다.
  • Java 파일 하나에 클래스는 여러 개가 있을 수 있지만, Public 클래스는 하나이고, Public 클래스와 .java 파일의 이름은 동일해야 합니다.
  • 멤버 변수 이름이나 클래스 이름, 변수 이름을 지정할 때는 Camel Notation (카멜 규칙)을 사용하는 것이 좋습니다. 예를 들면 orderid 가 아닌, orderId로 작성해 주는 것입니다.

 

 

지금까지 객체지향적인 프로그래밍의 의미와 장점 그리고, 작성하는 방법과 규칙까지 알아보았습니다!

읽어주셔서 감사합니다:)