ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • C# 명령행 컴파일러, *클래스* (교육9일차)
    C# 2020. 5. 28. 11:28

    (지역 변수)
    stack       heap (동적 할당)
    |   |           |   |  (new)
    |   |           |   |
    |   |           |   |
    |   |           |   |
    |   |           |   |
    |   |           |   |
    |   |           |   |
    |   |           |   |

     

    int [] ar = 참조 변수

    arr=new int [10] 


    Main 메서드의 형태 네 가지
    C언어에서 온 것, C의 표준을 제정할 때 각각의 운영체제에 맞춰 발전해온 C언어를 전부 표준에 맞춰 수정하기엔 어려움이 있기에 다음 네 가지의 형태를 다 받아들이기로 했다.
    public static void Main();
    public static int Main();
    public static void Main(string [] args);
    public static int Main(string[] args);

     


    명령행 컴파일러

    프로젝트 생성 -> 전체 코드 복사-> 메모장에 붙여 넣고 메인에 소스를 적는다.-> 확장자를 cs로 바꾼다. ->실행

    명령행 컴파일러 프롬프트 실행
    (C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Visual Studio 2019\Visual Studio Tools)

    -> 만들어 놓은 cs파일이 있는 위치로 이동 -> csc 파일 이름. cs 입력 -> 생성된 exe파일 실행

    csc.exe : C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\Roslyn

    에 위치해 있다. C # Compiler의 약자이다. 이름을 바꾸거나 없으면 컴파일이 불가능하다,

     

    VIsual Studio = integrated Development Environment ( 통합 개발 환경) 

     

    클래스

    기존의 현실을 반영하기 어려운 흐름 지향에서 객체 위주로 프로그램하자 라는 취지에서 나온 객체지향 언어.

     

    학생들 전체

    (스마트 팩토리 반 학생들)  (인공지능반 학생들)

    - 위트 있는 강사님

    - 6.25 때 얘기하는 강사님

     

    구별되는 차별점을 현실세계에서는 사양 서라고 하고 프로그래밍 언어에선 클래스라고 한다,

    클래스 = 틀 ---------붕어빵 틀에 계속 부으면 붕어빵이 나온다. 이 붕어빵을 객체라고 한다. 붕어빵 틀은 클래스.

    클래스를 정의해놓으면 객체를 계속 생산해낼 수 있다. 클래스를 만들고 클래스를 토대로 변수를 하나 만들면 그 변수는 객체이다.

     

    class 이름 (변수 이름 짓는 법과 동일)

    {

    }

     

     

             ↗ -행위정보    = 메서드

    객체-  |

             ↘

               -상태        = 변수

     

     

    유효 범위 : 프로그래밍에서 특정 이름(변수명 등)이 영향을 미치는 영역

    중괄호로 영역 표시

    중괄호 안에서만 변수가 살아있다. 

    위 예제는 Car라는 클래스를 만들고 안에 상태 정보 즉 속도를 가지고 있는 변수와 행위 정보 메서드, 속도를 늘렸다 줄였다 하는 메서드와 현재 속도를 출력하는 메서드를 만들었다. 그 이후 Main메소드 안에서 Car라는 클래스를 가진 변수 Mycar를 힙 영역에 만든다. 그리고 상태정보를 초기화 해보고 그 정보를 바탕으로 리턴 값이 없는 메소드를 구현했다.

     

    접근속성

    Public : 외부에 노출 될 수 있는 데이터

    Private :  외부에 노출 안되는 데이터

     

     

    Book guliver = new Book();

    걸리버라는 공간은 Book타입의 속성값을 담을 수 있는 메모리 할당하는 곳의 주소를 가진다.

     

    필드

    위의 예제에서 Car클래스의 정의로 속성만 포함하고 있는데, 이렇게 정의된 속성을 C#에서 필드라고 한다. 

     

    메소드

    행위 즉 행위 정보는 메서드로 표현된다. C같은 언어에서 함수로 불리거나 서브루틴 또는 프로시저라고 한다.

     

    Winmerge
    다른 두 개의. cs 확장자를 가진 파일을 비교할 때 사용한다.

     

    코드 추상화

    메서드를 사용할 때 입력 인자와 출력인자가 있을 때, 그 사용 원리를 모르더라도, 사용 방법만 안다면 정상적으로 사용이 가능하다. 이와 마찬가지로 Consonle.WirteLine도 내부 구현이 어떻게 되어 있는지 모르지만 해당 메서드에 값을 전달하면 화면에 출력된다는 사실을 알고 있다. 이를 코드 추상화라고 한다. 

     

    생성자

    생성자란 특별한 용도의 메서드 인데, 클래스에 생성자 메서드를 추가하면 객체가 생성되는 시점에 해당 메서드가 자동으로 호출된다. 클래스 안의 메서드를 클래스와 똑같은 이름으로 지정할 경우, 

    위의 예제와 같이 매개변수의 개수를 한개 두개 세개로 클래스의 이름과 같은 메서드를 생성하면 처음 객체를 생성 할 때 준 인수를 전달 가능하다. 마지막 출력 예제를 보면 세개의 객체에 다 다른 인수를 줬는데 그에 맞게 출력이 된 것을 알 수 있다. 매개변수가 다를 경우 메소드 이름이 겹치는 것을 허용한다.(중복된 메소드)(Method Overloading)

     

    매개변수가 하나도 없는 생성자를 기본 생성자라고 해서 매개변수를 받는 다른 생성자와 구분하기도 한다. 사용자가 생성자를 정의 하지 않은 경우 생성자는 컴파일러가 만들어준다.

     

    일반 메소드의 경우

    반환값 메소드이름( 매개 변수)

    {

     

    }

     

    생성자 메소드의 경우

    클래스이름(매개변수)

    {

     

    }

     

     

     

Designed by Tistory.