객체지향이란 과연 무엇일까요? 먼저, 각각의 단어의 의미를 살펴보는 것이 좋을 것 같습니다.
객체란 무엇일까요?
저도 처음엔 잘 몰라서 여러 곳을 검색해 보았습니다. 그 결과, 객체란 사람, 사물, 동물 등 현실에 존재하는 모든 대상을 의미한다는 것을 알게 되었습니다. 즉, 세상 만물이라고 볼 수 있겠죠.
인간은 자신의 이해의 틀에 맞게 분류라는 작업을 해왔습니다. 분류를 하면 이해하기 쉽고, 설명하기도 편해지기 때문입니다. 예를 들어, 물리학에서는 고체/액체/기체로, 생물학에서는 종(Species)으로 분류합니다. 이처럼 인간은 많은 객체들을 자신이 이해할 수 있는 범위에서 분류해 왔습니다.
프로그래밍의 관점에서 보면, 여기저기 흩어진 객체들을 비슷한 것들끼리 분류해서 모아둔 것이 바로 클래스(class)라는 집합체라고 생각할 수 있습니다.
// 예시1: C언어 배열
char 학생_이름[10][20];
int 학생_id[10];
// 예시2: C언어 구조체
struct student {
int id;
char name[20];
};
struct student students[10];
// 예시3: 자바 클래스
public class Student {
int id;
String name;
}
Student[] students = new Student[10];
이처럼 클래스라는 개념이 도입된 이후, 객체지향은 크게 발전했습니다. 그래서 저는 객체지향에서 가장 중요한 개념이 바로 클래스라고 생각합니다.
클래스에는 데이터(속성)와 기능(메서드)이 함께 들어갑니다. 클래스에는 그 클래스에 어울리는 데이터와 기능이 들어가야 합니다. 만약 어울리지 않는 데이터가 들어가 있다면, 마치 자신에게 맞지 않는 옷을 입은 것처럼 어색해 보일 것입니다. 데이터와 기능 모두 클래스에 핏이 맞아야 합니다. 저는 이것을 Class-Fit Principle(클래스-핏 원칙)이라고 부르고 싶습니다.
캡슐화, 추상화, 다형성, 상속성 등 객체지향의 여러 특성들은 모두 클래스라는 옷을 잘 입기 위해 만들어진 약속이라고 생각합니다.
사회가 아름답게 유지되는 이유는 서로에 대한 도덕적 약속(양심, 정직), 사회적 약속(질서, 신뢰), 그리고 미풍양속(아름답고 좋은 풍속) 덕분에 서로 존중하고 배려하며 예절을 지키기 때문입니다.
코드도 아름답게 만들기 위해서는 프로그래머들이 자신뿐 아니라 동료들을 위해서 매너 있게 코드를 작성해야 합니다.
캡슐화, 추상화, 다형성, 상속성 등은 매너 있는 코드를 만들기 위한 하나의 규칙이라고 생각합니다.
객체지향이라는 말에서 지향이란, 끝나지 않고 계속 나아간다는 의미도 담고 있습니다.
더 매너 있는 코드를 만들기 위해 계속해서 지향해 나가시길 바랍니다.
마지막으로, 객체지향은 단순히 프로그래밍 기법이 아니라, 더 좋은 소프트웨어, 더 아름다운 코드를 만들기 위한 개발자들의 ‘매너’이자 ‘철학’입니다.
클래스라는 옷을 내게, 그리고 우리 팀에 꼭 맞게 입히는 연습을 계속해보세요.
우리가 마음속에 새겨야 할 한마디를 남깁니다.
Manners-Code, Maketh, Beautiful-Programs.

이미지는 seaart.ai 에서 만들었습니다.