안녕하세요~! 문쑹입니다 :)
드디어 일주일차가 되었습니다! 하지만 발전이 없는 것 같은 이 기분 ㅠ 좀 더 노력해보겠습니다!
클래스
- 클래스는 객체지향 프로그래밍의 중심 개념이다.
- 속성을 표현하는 데이터와 동작을 기술하는 함수의 묶음이다.
- 키워드 class로 시작하며 클래스 이름을 지정하고 { } 블록 안에 멤버를 나열한다.
- 선언만으로 사용할 수 없으며 new 연산자로 할당해야 한다.
- 생성과 동시에 객체를 초기화하고 싶다면 생성자를 정의한다.
의사코드(슈도코드, pseudocode)는 프로그램을 작성할 때 각 모듈이 작동하는 논리를 표현하기 위한 언어
유효범위는 프로그래밍에서 특정이름(변수명 등)이 영향을 미치는 영역(중괄호로 영역 표시)
클래스를 만들어 보자. 우선 Car라는 클래스를 프로그램 클래스 안에 클래스를 만들었다.
클래스의 내용안에 코딩하기 전 의사코드를 작성하여 코딩을 하면 좀 더 수월하다.
우선 iSpeed라는 클래스 변수를 만든뒤 클래스 메소드 Acc(), DeAcc()를 생성한다. Acc() 메소드에는 iSpeed가 10씩 증가하는 코드를 작성하고 DeAcc() 메소드에는 iSpeed가 10씩 감소하는 코드를 작성하였다.
Car MyCar = new Car(); 객체 생성과 동시에 초기화를 해준 후 위에서 만든 클래스 메소드를 불러온다.
중복되는 Console.WriteLine()을 클래스 메소드로 만들어서 넣어보자.
메서드 사용이 눈에 익을 수 있게 몇 가지 다양한 유형으로 코드를 변경해 보겠습니다.
GetValue와 Output 메서드의 정의는 낯설지 않지만, 그것을 호출하는 코드는 조금 낯설게 느껴집니다. 여기서 m.GetAreaOfSquare 메서드를 호출하고 인자로 m.GetValue 메서드 호출을 전달 했는데, 수학의 함수를 사용하는 방법을 떠올려보면 쉽게 알 수 있습니다.
f(x) = x * x;
g(x) = x -5;
합성 함수는 g(f(x))로 표현할 수 있다. x=5라면 합성 함수의 반환값은 20이 된다.
생성자
C#클래스에는 특별한 용도의 메서드가 있다. 그중 하나인 생성자(constructor)를 알아보자.
클래스에 생성자 메서드를 추가하면 객체가 "생성"되는 시점에 해당 메서드가 자동으로 호출 된다.
생성자의 동작 방식을 테스트해 보겠습니다.
반환 타입이 없고 클래스 이름과 동일한 public Car() 메서드를 정의해 두면 코드에서 new Car()을 실행하는 시점에 해당 메서드의 코드가 실행된다. 생성자에는 말 그대로 객체를 생성하는 시점에 실행돼야 할 코드를 담을 수 있다. 모든 클래스는 생성자를 가지고 있다. 생성자를 여러 개 정의하는 것도 가능하다. 아래와 같이 Book 클래스에 다음과 같은 생성자를 제공할 수 있다.
각 생성자를 상황에 따라 골라 쓸 수 있다.
생성자는 다른 일반 메서드처럼 매개변수를 가질 수도 있다. 일반적으로 매개변수를 갖는 생성자를 통해 외부로부터 객체를 초기화 하는 값을 입력 받는다.
public Car(int iSpeed)메서드에서 "iSpeed"라는 값을 생성자의 인자로 전달 받았다. 매개변수가 하나도 없는 생성자를 기본 생성자(default constructor)라고 해서 매개변수를 받는 다른 생성자와 구분하기도 한다.
생성자 중복(오버로딩)
매개변수의 이름이 같더라도 개체가 다르면 이름을 중복하여 사용가능하다.
이상 포스팅을 마치겠습니다. 감사합니다!
Hasta Luego~