안녕하세요. 애드라이프입니다.
오랜만에 C#으로 돌아왔습니다!!
이전 포스팅으로 기초를 더 다지고 싶으신 분들은
하단 링크 꼭 참고해주세요.
그렇게도 나중에 따로 말씀드린다고 했던!!
뒤에 가서 자세히 배우자고 했던 클래스입니다.
하지만 클래스를 알기 전에 잠깐
객체지향 언어에 대해 언급하겠습니다.
( 클래스를 설명하기 위해 꼭 필요한 개념입니다!! )
객체지향 언어는 모든 것을 객체로 표현하고 그것으로
프로그래밍을 하는 언어라고 간단히 말할 수 있습니다.
예를 들어 우리 주변에 있는 사물!
자동차, 연필, 거울, 청소기 등등
다 객체라고 할 수 있습니다.
물론 사물뿐 아니라 생물도 똑같은 개념입니다.
고양이, 강아지, 비둘기 모두요!
하지만 바로 생각했을 때 이것들을 프로그램으로
표현하기란 쉬운 일이 아닌 것처럼 보입니다.
우리는 표현하는 방법을 모를 뿐 어려운 일이 아닙니다.
방법을 간단히 설명하자면
처음에 자신이 표현하고자 하는 객체를 정합니다.
저는 자동차로 하겠습니다.
그럼 자동차에 대한 속성과 기능을 간단히 정의합니다.
자세히 정의할수록 복잡한 표현이 가능하겠지만
지금은 아주 간단하게 설정하겠습니다.
속성(겉모습이나 데이터로 표현이 가능한 것) - 변수로 표현 가능
- 색상
- 인승
기능(객체가 수행하는 기능이나 동작) - 메서드로 표현 가능
- 주행
- 주차
예를 들어 위와 같이 자동차의 속성과 기능을 정의합니다.
그럼 객체를 생성(프로그램) 하기 위한 준비는 끝입니다.
이제 클래스(Class)를 설명하겠습니다.
기본적으로 클래스는 객체를 포함하고 있습니다.
다시 말해 클래스 안에는 변수와 메서드가 존재한다는 말이죠.
기본 구조를 보면 이해가 더 쉬울 겁니다.
class 클래스 이름
{
//변수
//메서드
}
프로그램으로 예를 들어보겠습니다.
class car
{
public string car_color; //자동차 색상을 나타내는 변수
public int persons; //자동차 인승을 나태내는 변수
public void Driving() //주행기능을 수행하는 메소드
{
WriteLine($"{persons}인승 {car_color}색 자동차가 주행을 시작합니다.");
}
public void Parking() //주차기능을 수행하는 메소드
{
WriteLine($"{persons}인승 {car_color}색 자동차가 주차를 시작합니다.");
}
}
위와 같이 클래스를 나타낼 수 있습니다.
위에서 언급한 대로 클래스는 변수(객체의 속성)와
메서드(객체의 기능)를 포함하고 있는 것을 알 수 있습니다.
( 뭐 꼭 변수와 메서드만 가지고 있다는 이야기는 아닙니다!! )
하지만 여기까지는 클래스는 생성한 것에 불과합니다.
어떻게 보면 예쁜 색상에 사람을 태울 수 있고
주행과 주차 기능이 있는 자동차를 만들어 놓기만 한 샘이죠.
너무 아깝지 않나요?
여기서 등장하는 개념이 바로 인스턴스와 생성자입니다.
객체 지향 프로그래밍(OOP)에서 인스턴스(instance)는
해당 클래스의 구조로 컴퓨터 저장공간에서 할당된 실체를 의미한다.
생성자는 한글로 되어있으니 무슨 말인지 아실 테고
인스턴스가 어떤 의미인지 궁금하실 것 같아서
위키 형님에게 물어보고 왔습니다.
실체! 그렇습니다. 인스턴스는 실체를 의미하죠.
그래서 car라는 클래스의 인스턴스를 정의한다고
말하고 그것은 실제로 위에서 만든 자동차를
사용한다는 의미가 됩니다!!
인스턴스는 아래와 같이 정의하고 사용합니다.
car DreamCar = new car(); // DreamCar라는 객체를 선언한다.
DreamCar.car_color = "무지개"; //자동차의 색상을 정의합니다.
DreamCar.persons = 2; //자동차의 인승을 정의합니다.
DreamCar.Driving(); //무지개색 2인승 자동차가 주행을 시작합니다.
DreamCar.Parking(); //무지개색 2인승 자동차가 주차를 시작합니다.
위 코드에 보면 new car();라는 부분이 있습니다.
여기서 car()가 생성자라는 메서드입니다.
이 생성자라고 하는 메서드를 이용하여
new라는 키워드와 함께 DreamCar라는 객체를
생성해줍니다.
위의 모든 것을 하나의 프로그램으로 작성하여
이해를 돕도록 하겠습니다.
using static System.Console;
namespace Basic_class
{
class car
{
public string car_color; //자동차 색상을 나타내는 변수
public int persons; //자동차 인승을 나태내는 변수
public void Driving() //주행기능을 수행하는 메소드
{
WriteLine($"{persons}인승 {car_color}색 자동차가 주행을 시작합니다.");
}
public void Parking() //주차기능을 수행하는 메소드
{
WriteLine($"{persons}인승 {car_color}색 자동차가 주차를 시작합니다.");
}
}
class Program
{
static void Main(string[] args)
{
car DreamCar = new car(); // DreamCar라는 객체를 선언한다.
DreamCar.car_color = "무지개"; //자동차의 색상을 정의합니다.
DreamCar.persons = 2; //자동차의 인승을 정의합니다.
DreamCar.Driving(); //무지개색 2인승 자동차가 주행을 시작합니다.
DreamCar.Parking(); //무지개색 2인승 자동차가 주차를 시작합니다.
}
}
}
위 프로그램의 실행 결과는
콘솔 프로젝트 생성과 실행방법을 모르시는 분은
아래 링크를 참고해주세요!!
이번 포스팅에서는 클래스의 아주 기본적인 부분만
다뤘습니다. 벌써 머리가 아프시다는 분들은
이전 포스팅을 천천히 복습하기고 오면 좀 나아질 겁니다!!
지금까지 클래스에 대한 내용이었습니다.
다음 포스팅에서도 클래스를 계속 이어서 할 예정입니다.
다음에는 더욱 유익한 포스팅으로 돌아오겠습니다.
by 애드라이프
'C# 프로그래밍 > 기초 다지기' 카테고리의 다른 글
C# 프로그램 시작하기 - 클래스(CLASS) #10-1 (생성자, 정적,인스턴스) (0) | 2020.05.04 |
---|---|
C# 프로그램 시작하기 - 메소드(Method)에 대하여 #9-5 (0) | 2020.04.21 |
C# 프로그램 시작하기 - 메소드(Method)에 대하여 #9 (0) | 2020.04.20 |
C# 프로그램 시작하기 - Jump문 알아보기 #8 (0) | 2020.04.18 |
C# 프로그램 시작하기 - 반복문(루프문) 다루기 #7 (0) | 2020.04.16 |