NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • 학습
  • 매뉴얼

    학습


    C# 17-1. C#의 클래스 (Class)

    페이지 정보

    본문

    안녕하세요. 소심비형입니다. 드디어 OOP(Object-Oriented Programming, 객체 지향 프로그래밍)의 핵심인 클래스를 하게 되었군요. 오늘은 첫번째 시간으로 간단하게 클래스를 어떻게 만들고, 구성하는지에 대해서 알아보겠습니다. 그전에 객체 지향 프로그래밍에 대해서 잠깐 알아보고 넘어갈께요.

    Je8AJAk.gif

     

     

    객체 지향 프로그래밍은 이전에 없었던 컴퓨터 프로그래밍 패러다임의 하나로 실제 세계에 기반한 모델을 만들기 위해 추상화를 사용하고 있습니다. 컴퓨터 프로그램을 순차적인 명령어의 목록으로 보는 시각에서 벗어나, 현실 세계와 같은 개체들로 표현한 것입니다. 이렇게 현실에 존재하는 모든 개체들은 서로 메시지를 주고 받고, 데이타를 처리하며 심지어 행동으로 옴길수 있습니다.

     

    예를 들면, 고양이라는 개체를 생각해볼 수 있습니다. 걷고, 달리고 그들 나름의 언어를 구사할 수 있죠. 우리가 보통 말하는 "야옹"으로 말입니다-_-; 또한, 그들끼리 주고 받은 대화에 따라 어떤 행동도 하게 됩니다. 확장해서 생각해보면 자동차도 만들 수 있게 됩니다. 물론 사람도 만들 수 있죠.

     

    객체 지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용되고 있습니다. 또한, 프로그래밍을 더 배우기 쉽게 하고 소프트웨어 개발과 유지보수를 쉽게하며 보다 직관적인 코드 분석을 가능하게 하는 장점을 가지고 있습니다. 하지만, 객체 지향 언어인 C# 또는 Java를 사용하면서 고전적인 방식으로(객체 지향 프로그래밍이 아닌) 개발하는 개발자도 더러 보여지고 있습니다. 저를 포함해서 말이죠^^; 객체 지향적인 프로그래밍을 하는것은 상당히 어렵습니다. 적당히 공부해서 나는 OOP를 한다고 말하는 사람은 없을것입니다. 그만큼, 객체 지향 프로그래밍은 어렵습니다. C#이나 Java가 어렵다는 의미는 아닙니다.

     

    이제 간단한 프로그램을 하나 작성하도록 하겠습니다. 아래와 같이 Visual Studio를 실행한 후 프로젝트를 신규로 추가합니다.

    EYP0qAq.png

     

     

    새 프로젝트 창에서 "콘솔 응용 프로그램" 또는 "콘솔 앱"을 선택하고 이름은 "BasicClass"로 입력하고 하단 우측의 "확인"을 클릭하세요.

    UBc6i6w.png

     

     

    우측의 솔루션 탐색기에 BasicClass프로젝트가 추가되었고, 이 프로젝트에 클래스를 추가합니다.

    rIb3iYZ.png

     

     

    "새 항목 추가"창에서 "클래스"를 선택하고 이름은 "MainApp"를 입력하고 하단 우측의 "추가"을 클릭하세요.

    4rCEkw1.png

     

     

    솔루션 탐색기에서 기본으로 생성되는 Program.cs 파일은 삭제하세요.

    이제 프로젝트의 참조에서 우클릭 후 참조를 하나 추가하도록 하겠습니다.

    UXWPbwR.png

     

     

    아래와 같이 "참조 관리자"에서 .NET Framework의 어셈블리중 "System.Drawing"을 체크하고 하단 우측의 "확인"을 클릭하세요. 대부분 필요한 어셈블리는 Visual Studio에서 알려줍니다. 아니면, 구글링을 통해 찾아내야 하구요. 하지만, 필요한 기능이 들어있는 어셈블리를 자주 사용하다보면 자연스럽게 외워지게 됩니다.

    GHLpFS3.png

     

     

    다음의 코드와 같이 클래스를 생성합니다. 아래의 코드에서 9라인과 같이 using이 추가되지 않은 클래스 또는 구조체를 사용하고자 할 때 Color를 타이핑한 후 "Ctrl + ."을 통해 using을 추가하거나 풀네임을 입력할 수 있는 도우미 창이 팝업됩니다.

    MainApp.cs

    using System;
    using System.Drawing;
     
    namespace BasicClass
    {
        class Cat
        {
            public string Name; public Color Color; public void Meow()
            {
                Console.WriteLine("{0} : 야옹", Name);
            }
        }
     
        class MainApp
        {
            static void Main(string[] args)
            {
                Cat kitty = new Cat();
                kitty.Name = "키티";
                kitty.Color = Color.White;
                kitty.Meow();
                Console.WriteLine("{0} : {1}", kitty.Name, kitty.Color.Name);
                Cat nero = new Cat();
                nero.Color = Color.Black;
                nero.Name = "네로";
                nero.Meow();
                Console.WriteLine("{0} : {1}", nero.Name, nero.Color.Name);
                Console.ReadLine();
            }
        }
    }

     

     

    6라인과 같이 class 키워드는 액세스 수준 뒤에 사용합니다. 6라인은 액세스 수준이 생략되어 있는데, 전체 코드는 다음과 같습니다.

    ※ 액세스 한정자는 public, private, protected, internal, protected internal이 있습니다.

        private class Cat

     

     

    이 경우에는 private을 사용했기 때문에 동일한 클래스 또는 구조체의 코드에서만 형식이나 맴버에 액세스할 수 있습니다. 클래스의 이름은 class 키워드 뒤에 공백없이 사용합니다. 정의의 나머지 부분인 클래스 본문에서는 동작과 데이터를 정의합니다. 클래스의 필드, 속성, 메서드 및 이벤트를 통칭하여 클래스 맴버라고 합니다.

     

    이제 고양이라는 개체를 사용하기 위해 인스턴스화 해야 합니다. 일반적으로 우리가 만든 Cat 클래스는 Cat이라는 형식을 정의할 뿐 개체 자체는 아닙니다. 개체는 클래스를 기반으로 하는 구체적인 엔터티이며 클래스의 인스턴스라고 합니다.

     

    개체는 21라인과 같이 new 키워드 뒤에 개체의 이름을 지정하여 생성할 수 있습니다. 개체를 생성하면 public 또는 protected, internal과 같은 액세스 한정자에 대해서는 필드에 접근이 가능합니다. 따라서 생성하고자 하는 클래스의 속성, 특성, 행동들을 지정할 수 있게됩니다.

     

    아래는 이 응용 프로그램을 실행한 결과입니다.

    omL8t0s.png

     

     

    간단하게 클래스란 무엇인지 알아보았습니다. 프로그래밍을 접해보신분들은 그리 어려운 내용은 아니겠지만, 처음 C#을 접하게 된다면 잘 이해가 가지 않을 수 있습니다. 아직 클래스에 대해 알아볼 내용이 많기 때문에 천천히 이해하고 넘어가도 될거 같습니다. 다음에는 클래스의 기본 생성자(Constructor)에 대해서 알아보겠습니다.

     

    다음 시간에...

    • 네이버 공유하기
    • 페이스북 공유하기
    • 트위터 공유하기
    • 카카오스토리 공유하기
    추천0 비추천0

    댓글목록

    등록된 댓글이 없습니다.