안녕하세요. 스코리아입니다.
오늘은 자바(JAVA)의 객체지향적인 프로그래밍이 도대체 무엇이고 어떤 장점이 있으며, 어떻게 구현하는지 모두가 알기 쉽게 정리해 보겠습니다.
우선 객체 (Object) 란 무엇일까요?
- 사전적인 의미로는 의사나 행위가 미치는 대상이라고 합니다.
- 프로그래밍적인 의미로 봤을 때는 구체적, 추상적 데이터의 단위를 의미합니다. 예를 들면 회원, 생산, 주문, 배송 등을 객체라고 볼 수 있겠지요.
그렇다면 객체지향적인 프로그래밍 (OOP)이 무엇일까요?
- 프로그램의 구현을 시간의 흐름순이 아닌 객체 간의 관계와 협력을 기반으로 하는 것을 의미합니다.
- 여기서 프로그램의 구현으로 시간의 흐름순으로 설계하는 것을 절차 지향 프로그래밍이라고 합니다.
아침에 일어나 학교를 가는 과정을 예로 들어봅시다.
- 절차 지향적인 프로그래밍의 경우 시간이나 사건의 흐름에 따라 프로그래밍을 진행하므로, 아래와 같이 순차적인 순서로 될것입니다.일어난다 -> 씻는다 -> 밥을 먹는다 -> 옷을 입는다 -> 지하철을 탄다 -> 요금을 지불한다 -> 지하철을 내린다 -> 학교 도착
- 객체 지향적인 프로그래밍의 경우 어떻게 될까요? 아래 그림처럼 될 것입니다.
우리는 이러한 객체 지향적인 프로그래밍을 OOP (Object Oriented Programming)이라고 합니다. 반면 절차 지향 프로그래밍은 Procedural Programming이라고 합니다.
장점
객체 지향적인 프로그래밍, 즉 자바로 프로그래밍을 했을 때 장점은 무엇이 있을까요? 크게 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로 작성해 주는 것입니다.
지금까지 객체지향적인 프로그래밍의 의미와 장점 그리고, 작성하는 방법과 규칙까지 알아보았습니다!
읽어주셔서 감사합니다:)
'JAVA > 객체지향' 카테고리의 다른 글
자바 접근 제어 지시자와 정보은닉을 활용한 캡슐화 (객체지향) (0) | 2023.08.14 |
---|---|
자바 참조 자료형 변수 정의하기, 사용 방법 (feat. 객체) (2) | 2023.08.12 |
자바 생성자 의미와 구현, 그리고 생성자 오버로딩 뜻? (1) | 2023.08.10 |
자바 메소드 의미, 인스턴스 생성과 힙메모리란? (feat. 객체) (1) | 2023.08.09 |
자바 함수 정의, 호출 방법과 스택 메모리란? (0) | 2023.08.07 |