본문 바로가기
소프트웨어 공학

[객체지향] 객체란 무엇인가?

by 티옌.liy 2022. 11. 8.

객체지향 프로그래밍의 핵심인 객체는

처음에 들으면 개념이 매우 난해해서

사람마다 이해하는게 아예 달라서

 

같은 개발자끼리도 이해한 방식이 다르기에

같은 말을 하면서도 서로 왜 그렇게 설명하지 이해가 안된다고

토론배틀을 벌이는 모습을 심심찮게 볼 수 있다.

 

개인적으로 내가 이해한 객체의 개념을

정리해서 올려보았다.

 

1. 객체 (Obecjt)

사전적 정의로는 실제로 존재하는 것을 의미한다.

객체지향 프로그래밍의 객체는 처리의 대상이 되는 목적물로 유형과 무형을 구분하지 않는다.

 

이를 프로그래밍 학문의 관점으로 말하면, 속성과 그에 대한 연산방법을 함께 묶은 것이라 할 수 있다.
즉, 실존하는 물질, 장소, 생명체도 객체이고, 상상속에 존재하는 어떠한 것도 객체라 할 수 있다.

 

 

2. 객체의 특징

 2.1 고유 이름 지정 가능

이름을 지정한다는 것은 객체의 존재를 실체화 함과 동시에 독립성을 부여하는 것이다.

때문에 이름을 지정할 수 있다는것은 너무 당연한것 같지만 매우 중요한 특징이라 할 수 있다.

 

2.2 메모리에 할당됨

객체를 표현하기 위해서 컴퓨터는 주기억장치에 객체의 정보가 적재한다.

 

RAM에 적재된 데이터는 CPU로부터 가공될 준비가 된 것이므로

무형화 상태였던 객체가 실체화되었다고 할 수 있다.

 

적재된 객체를 인스턴스 객체라 하므로, 그냥 객체와 인스턴스 객체는 아예 다른 말이다.



3. 객체의 구성

프로퍼티와 메소드로 정의하여 객체를 구성하고 인스턴스화 하여 객체를 구현한다.

객체 = 프로퍼티(속성) + 메소드(기능) = 맴버 변수 + 맴버 함수

 

Property/Attibute/속성

프로퍼티, 애트리뷰트, 속성 등 다양하게 불리는데, 데이터(값)의 특징을 표현하는 단어다.

데이터가 가진 값도 속성이고, 값의 정보도 속성이다.

 

Method/Function

메소드, 함수라도 불리며, 데이터로 수행하는 일련의 처리 과정 또는 작업을 표현하는 단어이다.


4. 객체와 클래스

객체지향 프로그래밍에서는 객체를 구현하기 위해 클래스(Class) 문법을 사용한다.
클래스는 객체가 보유할 변수(값)와 함수(기능)을 모형화하여 구체화한다.

예시로, 학생 객체는 이름, 학년, 번호, 반에 대한 프로퍼티를 가진 객체를 클래스로 구현하면 아래 코드와 같다.

public class Studnet{
    String studentName; // 학생 이름
    String studentGrad; // 학생 학년
    int studentId; // 학생 번호
    int studentClass // 학생 반
}



5. 추가 팁

가독성을 위한 암묵적인 변수, 함수, 클래스 이름 작성 규칙과 약간의 정보를 기술한다.

처음부터 습관으로 만드는것이 이롭다.

 

5.1 클래스는 대문자로 시작하며, 이후 단어도 첫글자는 대문자로 작성을 권장한다.

 

코드 예시
public class UserAccountList{
}


● 함수와 변수의 이름은 camel notation 방식으로 명명하는것을 권장한다.  ex) studentNumberList

 

코드 예시
public class StudentList{
    String studentList;
    int sttudentId;
    
    void printStudentList() {}
}

 


● java file에는 클래스를 여러개 구현할 수 있으나, public 클래스는 반드시 하나이고 java file와 이름은 동일해야한다

 

 

코드 예시   [  Student.java file  ]
public class Student{
}

 

● 폰트는 tahoma가 가장 깔끔하고 혼란이 적어서 애용한다.

이클립스에서 기본으로 제공하며, 신문 느낌은 Times New Roman, 컴퓨터 느낌은 fixedays 폰트도 좋다

tahoma 폰트 화면

 

댓글