본문 바로가기

프로그래밍 언어/코틀린_쌩초보를 위한 기초

쌩초보를 위한 기초_22_Class와 Object

클래스(clsss)와 오브젝트(object)

 

객체 지향 프로그래밍(Object Oriented Programming)은 함수형 프로그래밍과 함께 가장 강력한 프로그래밍 기법으로 자리 잡았다.

 

초창기에 사용하던 기법인 절차적 프로그래밍(Procedural Programming)은 코딩한 순서대로 실행하도록 만들어 졌는데 프로그램의 규모가 점점 커지고 복잡해지면서 새로운 프로그래밍 기법이 요구되었고 그 결과물로 탄생한 것이 객체지향 프로그래밍이다. 객체 지향이라는 말 그대로 객체라는걸 만들어 활용하면 큰 프로젝트를 구조적으로 나누거나 또는 분업해서 동시에 여러 명이 프로그래밍할 수 있으므로 효율적인 작업이 가능하다.

 

객체(object)를 만들기 위해서는 그것을 만들 수 있는 틀이 필요하다.

그 틀이 클래스(class)다.

 

 

객체 지향과 관련된 용어를 위 그림의 과자 틀에 비유해서 설명한다.

 

class는 <과자 틀>이다.

클래스는 사전적 의미로 등급, 분류, 학급을 나타낸다.

 

object는 <과자 틀>로 만든 마들렌 과자이다.

즉, 클래스(class)라는 <틀>을 사용하여 객체(object)를 만들 수 있다.

객체는 다른 언어에서는 Instance(인스턴스)라고 부르기도 한다.

 

Property(프라퍼티)는 <과자틀>에서 사용하는 <밀가루,설탕,우유 등>과 같은 재료이다. 

property는 '속성'이라는 뜻의 변수를 나타낸다.

즉, 클래스에서 선언한 변수를 property라고 부른다.

Java언어에서는 field(필드) 라고 부른다.

 

Method(메써드)는 함수(function)의 일종으로 객체와 연관된 함수를 나타낸다.

매써드는 객체를 만들기 위해 해야 할 동작을 나타내는 <과자 만들기 레시피>와 같다.

 

 

클래스 만들기

 

cookie(쿠키)라는 클래스를 만들어 보자.

 

초콜릿쿠키를 만든다고 하면

프라퍼티는 쿠키이름, 밀가루, 초콜릿, 색소가 될 수 있다.

name, flour, chocolate, color

 

쿠키를 만드는 기본 과정(동작)은 bake() 함수로 만든다.

만든 과자를 먹는 과정은 eat()함수로 만든다.

 

클래스 선언 형태

 

클래스를 만들려면 class 키워드를 사용한다.

기본적인 선언 형태는 다음과 같다.

 

클래스의 중괄호 안에 property(속성)와 method(메써드)를 넣는다.

속성을 적어보자.

 

이름은 myCookie(내 쿠키)

밀가루(flour)는 10을 넣고 초콜릿(chocolate)은 다크로 색깔은 블루로 한다.

 

이제 만드는 것과 먹는 것을 함수로 만들자.

 

bake (굽기) 함수는 밀가루 양을 출력한다.

eat (먹기) 함수는 개수를 출력한다.

 

Cookie라는 클래스를 만들었다. 이것을 클래스를 선언했다라고 표현한다.

이 클래스 안에 4개의 속성과 2개의 메써드도 선언하고 초기화 해서 만들었다.

클래스에 소속된 속성과 함수를 멤버 속성(member property), 멤버 메써드(member method)라고 부른다.

 

이 Cookie 클래스는 하나의 틀이기 때문에 아직 쿠키가 만들어지지 않았다.

즉, 쿠키를 만드는데 필요한 재료와 과정들이 들어 있지만 그것은 단지 머리속에서 추상화로만 존재하는 개념이다.

이렇게 추상적인 선언을 이용해서 실제하는 쿠키를 만들려면 객체(object)를 만들어야 한다.

 

객체 만들기

 

이제 main() 함수에 객체(object)를 만들어 보자.

여기서는 초코쿠키라는 객체를 만들것이다.

 

 

초코쿠키라는 뜻으로 chocoky라는 이름을 가진 객체를 만들었다.

이제 chocoky는 먹을 수 있다.

즉, 존재하게 된 것이다.

이렇게 어떤 클래스로 만들어진 객체를 Instance(인스턴스)라고 한다.

다시 말해서 객체 chocoky는 클래스 Cookie의 인스턴스인 것이다.

 

이 객체는 Cookie 클래스의 생성자(constructor)를 통해 만든다.

생성자는 클래스명 뒤에 붙인 ( )괄호 함수를 가리킨다.

만들어진 객체(chocoky)의 property(속성)은 클래스의 속성을 사용하고 다른 값(white)을 할당할 수도 있다.

 

이제 이 객체로 어떤 작업을 할 수 있는지 알아본다.

 

 

초코키 색을 출력하면 객체의 속성을 읽어올 수 있다.

객체로 클래스의 매써드를 불러와서 실행하거나 매개변수를 바꿔 불러올 수도 있다.

매써드에 접근하려면 ( . )점 부호를 사용한다.

 

다음 글에서는 클래스로 부터 객체를 생성할 때 자동으로 실행하는 함수인 생성자에 대해 알아본다.

 

끝.