본문 바로가기

IT/개발

클래스(class)

자바, 객체지향언어에서 기본적으로 쓰이는 클래스에 대해서 설명하겠습니다.

 

클래스는 명세서이고, 분류하기 위한 것이라고 할 수 있습니다. 일반적으로 가장 쉽게 말하면 객체를 만들어내기 위한 틀이라고 할 수 있습니다. ㅎㅎ

 

 

우선 클래스의 구성요소를 설명하면 이름, 필드, 메소드로 구성됩니다.

 

클래스의 이름은 동일 패키지내에서는 동일한 이름을 가질 수가 없고 고유한 이름을 가져야 합니다.

또한 이름은 다른데 의미가 동일한 클래스가 존재해서는 안되며 클래스 자체가 캡슐화하고 있는 데이터를 잘 표현 할 수 있는 이름을 사용하여야 합니다.

 

클래스의 필드는 Property, Attribute라고도 불립니다.

필드는 클래스를 통해서 생성된 객체의 상태(생성된객체의 멤버필드의 값)를 나타내게 되며 해당 클래스를 통해 생성된 객체는 클래스에 없는 필드에 대한 상태는 가질 수가 없습니다.

필드에는 접근지정자를 지정할 수가 있는데 접근지정자를 이용해서 정보은닉을 나타 낼 수가 있습니다.

필드는 클래스에 캡슐화 할 데이터만을 필드로 나태내야 합니다.

 

클래스의 메소드는 클래스를 통해 생성된 객체가 할 수 있는 행위를 나타냅니다.

OOP에서 멤버필드의 경우 모두 캡슐화되어 있기 때문에 외부에서 접근이 안됩니다. 그렇기 때문에 해당 클래스의 목적에 맞게 멤버변수를 사용하기 위한 메소드를 만듭니다. OOP에서 멤버필드를 캡슐화하는 이유는 현실세상의 객체를 생각해보면 사람이라는 객체가 있다면 그 사람이 가지고 있는 장이나 위같은 장기들은 외부에 노출되지 않습니다. 이러한 현실세계처럼 나타내기 위한 것이 OOP이기에 멤버필드의 경우 기본적으로  경우 private접근지정자(access modifier)로 캡슐화합니다. 그렇기에 외부접근이 필요한 멤버필드의 경우 접근메소드(access method)를 만들어서 사용을 하게 됩니다.

 

 클래스는 앞에서 말했듯이 객체의 공통된 속성과 행위를 나타내는 틀에 해당하기 때문에 객체타입이라고도 표현합니다.

 클래스는 쉽게 데이터와 함수를 가지고 있는 데이터타입이라고 말 할 수도 있습니다. 

 하나의 클래스는 다양한 현실세계의 객체를 인스턴스화를 통해서 표현 할 수가 있고 이러한 형태로 객체들이 인스턴스화가 되서 메모리에 할당되고 실질적으로 OOP에서 각 멤버변수들에 대한 값을 가지고 주체가 되서 프로그램을 실행하게 합니다.

 

 

 제가 생각하는 클래스는 자기개발서입니다. 자기개발서는 글쓴이의 삶이 책안에 틀처럼 들어 있다고 생각하거든요. 그래서 그 책을 읽은 사람들은 그 책처럼 행동하거나, 아니면 확장(?) 또는 자신에게 맞게 해석해서 더 좋은 효과를 나타내기도 한다고 생각합니다.

 클래스 또한 자기개발서처럼 그대로 가져다 쓰기도 하지만 개발자에 따라서 해당 클래스를 확장해서 자신에게 맞는 클래스를 만들 수 있기에 저는 클래스를 자기개발서라고 정의하고 싶습니다. ㅎㅎ

'IT > 개발' 카테고리의 다른 글

다형성(polymorphism)  (0) 2013.08.15
상속(inheritance)과 확장(extend)  (0) 2013.08.15
레퍼런스(reference) 타입  (0) 2013.08.14
객체(object)  (0) 2013.08.13
객체지향(object oriented)의 개념  (0) 2013.08.13