[C#] 6강 namespace,클래스,메소드, 생성자 등

Dog발자·2024년 2월 20일

c#

목록 보기
7/8

오늘은 namespace,클래스,메소드, 생성자를 알아보겠습니다.

1. using System; namespace

using System; 문은 System 네임스페이스를 가져오는 역할을 합니다.

Namespace = 같은 그룹의 클래스 묶는 도구 = 이름공간 = 이름이 모인 공간

이라고 보면 됩니다.


2. 클래스(class)와 메소드(Method)

클래스는 객체 지향 프로그래밍 (OOP)에서 특정 객체를 생성하기 위해 변수와 메서드를 정의하는 일종의 틀(template)입니다.

저는 쉽게 생각해서 클래스를 설계, 메소드(함수)는 기능,동작이라고 생각합니다.

class Monster <= 클래스를 선언하기 위한 키워드
{ <-클래스의 내용의 시작
  객체지향은 저 중에서 적절히 묶어서 클래스하는 것을 시킨다
}

일단 클래스(설계도)를 짤 때 변수 함수는 필요없다고 생각합니다.

그런거 생각해서 어디서 부터 해야 되는지 잘 모르기 때문입니다.

객체지향은 내가 표현하고 싶은걸 클래스로 만들어서
그 클래스로 객체를 만드는 프로그래밍입니다.
객체를 기반으로 모든걸 해결하기 때문에 객체를 지향 할 수밖에 없는 프로그래밍 입니다.

어려운 것을 생각할수록 자기만 혼란에 빠집니다.

내가 생각한 개념이 내 프로그램에서 사용되어 지기 위한 설계도를 의미하게 됩니다.


클래스의 주요 특징을 설명드리겠습니다.

A. 클래스 특징

1. 맴버변수와 메서드

클래스는 객체를 정의하기 위한 상태 값을 의미하는 멤버 변수와 클래스의 동작인 메서드로 구성됩니다.

2. 객체 생성

클래스는 특정 객체를 생성하기 위한 설계도로, 객체는 설계도로부터 만들어낸 제품이라고 볼 수 있습니다.

3. 상속

클래스는 전부 혹은 일부를 그 클래스 특성으로부터 상속받는 서브클래스를 가질 수 있으며, 클래스는 각 서브클래스에 대해 수퍼클래스가 됩니다.

4. 접근제어 지시자

클래스 내부에서는 접근 제어 지시자를 사용하여 멤버 변수나 메서드에 대한 접근을 제어할 수 있습니다.

1. public: 모든 외부(파생 클래스 포함)에서 해당 타입을 엑세스할 수 있습니다. 개별 타입 멤버의 엑세스 권한은 해당 멤버의 접근 제한자에 따라 별도로 제한될 수 있습니다.

2. internal: 동일한 어셈블리 내에 있는 다른 타입들이 엑세스할 수 있습니다. 하지만, 다른 어셈블리에서는 접근이 불가합니다.

3. protected: 파생 클래스에서 해당 클래스의 멤버를 엑세스할 수 있습니다.

4. private: 동일 클래스/구조체 내의 멤버만 접근 가능합니다.

5. 생성자,소멸자

생성자(Constructor) = 전달체?
1. 객체가 생성될 때 자동으로 호출되는 메서드입니다.
2. 생성자는 필요에 따라 매개변수를 가질 수 있으며, 여러 개의 생성자를 오버로딩할 수 있습니다.
4. 생성자는 초기화 해주고 객체를 생성하게 해준다.
3. 생성자는 자료형 자체가 없어서 Return(반환)을 없습니다 .

소멸자(Destructor)
객체가 메모리에서 제거될 때 자동으로 호출되는 메서드입니다.

이 메서드는 객체의 정리 작업을 수행하며, 클래스 이름 앞에 ‘~’ 기호를 붙여 표시합니다.

소멸자는 매개변수를 가질 수 없으며, 하나의 클래스에는 하나의 소멸자만 있을 수 있습니다.

public class Dog
{
    public string name = new String("Dog");

    // 생성자(동적할당 하고 나서 초기화)
    public Dog(string _name)
    {
        name = _name;
        Debug.Log(name + "라는 이름의 강아지가 태어났습니다.");
    }

    // 강아지가 메서드
    public void Bark()
    {
        Debug.Log(name + "가 멍멍~ 하고 짖었습니다.");
    }

    // 소멸자
    ~Dog()
    {
        Debug.Log(name + "라는 이름의 강아지가 천국으로 갔습니다.");
    }
}

  

예시)

만약 고양이를 예시로 해보겠습니다.


using System; //=>System 네임스페이스를 가져오는 역할


namespace Animals //namespace 없어도 코드 실행 가능
{

    //파일과 클래스 명이 다르다면 오류 발생
    internal class Cat//Cat 클래스
    {
        private int Leg= 4;
    
        //main 메소드 : 실행될 때 처음부터 실행되는 곳
        public static void Main(string[] _args)
        {
            Sound();
        }
        public void Sound() //고양이 울음소리
        {
            System.Console.WriteLine("meow");
        }
        public void Leg()발 갯수
        {
            System.Console.WriteLine("고양이의 발 갯수 : " +Leg)
        }
    }
}

0개의 댓글