🚀 클래스와 생성자(Constructor)
클래스는 객체 지향 프로그래밍(OOP)에서 가장 중요한 개념이며,
생성자는 클래스의 객체가 생성될 때 자동으로 호출되는 특별한 메서드입니다.
1️⃣ 클래스(Class)란?
클래스(Class)는 객체(Object)를 만들기 위한 설계도입니다.
클래스를 사용하면 데이터(속성)와 기능(메서드)를 하나로 묶어 관리할 수 있습니다.
📌 클래스 기본 구조
class 클래스이름
{
// 필드 (속성)
데이터형 변수이름;
// 생성자
public 클래스이름() { }
// 메서드 (동작)
반환형 메서드이름()
{
실행 코드;
}
}
2️⃣ 생성자(Constructor)란?
생성자(Constructor)는 객체가 생성될 때 자동으로 실행되는 메서드입니다.
✔ 클래스와 동일한 이름을 가진다.
✔ 반환형이 없다. (void도 생략됨)
✔ 객체가 생성될 때 자동 호출되어 필드를 초기화할 수 있다.
📌 생성자 종류
✅ 기본 생성자 (Default Constructor)
✅ 매개변수가 있는 생성자 (Parameterized Constructor)
3️⃣ 예제 코드 - 클래스와 생성자 활용하기
using System;
namespace _2502281
{
class Person
{
private string Name;
private int Age;
// 🔹 기본 생성자 (Default Constructor)
public Person()
{
Name = "이름 없음";
Age = 0;
Console.WriteLine("기본 생성자 실행");
}
// 🔹 매개변수가 있는 생성자 (Parameterized Constructor)
public Person(string pName, int pAge)
{
Name = pName;
Age = pAge;
Console.WriteLine("매개변수가 있는 생성자 실행");
}
// 🔹 객체 정보 출력 메서드
public void ShowInfo()
{
Console.WriteLine($"이름 : {Name}, 나이 : {Age}");
}
}
class Program
{
static void Main(string[] args)
{
// ✅ 기본 생성자 호출
Person p1 = new Person();
p1.ShowInfo();
// ✅ 매개변수가 있는 생성자 호출
Person p2 = new Person("철수", 25);
p2.ShowInfo();
}
}
}
4️⃣ 코드 설명
위 코드에서는 Person 클래스를 정의하고, 두 가지 생성자를 구현했습니다.
✔ 기본 생성자(Person()) → Name = "이름 없음", Age = 0 기본값 설정
✔ 매개변수 생성자(Person(string, int)) → 전달된 값으로 Name과 Age 초기화
📌 실행 결과

➡ 객체 p1이 생성될 때 기본 생성자 실행
➡ 객체 p2가 생성될 때 매개변수가 있는 생성자 실행
5️⃣ 생성자의 역할과 특징
✅ 객체가 생성될 때 자동 실행된다.
✅ 초기화 작업을 수행할 수 있다.
✅ 생성자는 여러 개(오버로딩) 정의 가능하다.
📌 생성자 오버로딩
public Person(string pName)
{
Name = pName;
Age = 0;
}
➡ 매개변수 개수에 따라 적절한 생성자가 호출됨.
💊캡슐화
객체 지향 프로그래밍(OOP)에서는 캡슐화(Encapsulation) 원칙을 따르며,
객체의 내부 데이터를 보호하고, 필요한 경우에만 접근할 수 있도록 관리하는 것이 중요합니다.
이때 사용하는 것이 Getter & Setter 함수, 그리고 프로퍼티(Property) 입니다 🚀
1️⃣ Getter & Setter 함수란?
C#에서는 클래스 내부의 변수를 private(외부에서 직접 접근 불가)로 설정하여,
데이터를 직접 수정하는 것을 방지할 수 있습니다.
하지만 외부에서 값을 설정하거나 가져와야 할 때,
Getter & Setter 함수를 사용하여 데이터를 안전하게 관리할 수 있습니다.
📌 Getter & Setter 함수 구현
class Person
{
private string name; // 내부 변수 (private 접근 제한)
// 🔹 Setter (값 설정)
public void SetName(string newName)
{
name = newName;
}
// 🔹 Getter (값 가져오기)
public string GetName()
{
return name;
}
}
class Program
{
static void Main(string[] args)
{
Person person = new Person();
person.SetName("철수"); // 값 설정
Console.WriteLine(person.GetName()); // 값 가져오기 → 철수
}
}
✅ SetName("철수")를 통해 private 변수 name에 값을 저장
✅ GetName()을 호출하면 name 값을 읽어올 수 있음
2️⃣ 프로퍼티(Property)란?
C#에서는 Getter & Setter를 더 간편하게 사용할 수 있는 문법인 프로퍼티(Property)를 제공합니다.
📌 프로퍼티의 역할
✔ 변수를 직접 노출하지 않고도 데이터를 안전하게 관리
✔ Getter & Setter를 자동으로 생성하여 코드 가독성 향상
✔ 값을 설정(set)하거나 가져올(get) 때, 추가 로직을 쉽게 추가 가능
📌 프로퍼티를 이용한 코드
class Person
{
private string name; // 내부 변수 (private)
public string Name // 프로퍼티
{
get { return name; } // Getter (값 가져오기)
set { name = value; } // Setter (값 설정하기)
}
}
class Program
{
static void Main(string[] args)
{
Person person = new Person();
person.Name = "영희"; // Setter 사용
Console.WriteLine(person.Name); // Getter 사용 → 영희
}
}
✅ person.Name = "영희" → set 프로퍼티를 통해 name에 값 저장
✅ Console.WriteLine(person.Name) → get 프로퍼티를 통해 값 반환
3️⃣ 자동 구현 프로퍼티 (Auto-Implemented Property)
위에서 본 프로퍼티는 여전히 private 변수를 따로 선언해야 했습니다.
하지만 C#에서는 자동 구현 프로퍼티(Auto-Implemented Property) 를 제공하여
더 간결한 코드 작성이 가능합니다.
📌 자동 구현 프로퍼티 사용
class Person
{
public string Name { get; set; } // 자동 구현 프로퍼티
}
class Program
{
static void Main(string[] args)
{
Person person = new Person();
person.Name = "민수"; // 값 설정
Console.WriteLine(person.Name); // 값 가져오기 → 민수
}
}
✅ private 변수를 선언하지 않아도 자동으로 관리됨
✅ 코드가 훨씬 간결해지고 가독성이 좋아짐
➕ 추가
1️⃣ DateTime 클래스란?
DateTime은 C#에서 날짜와 시간을 저장 및 조작하는 클래스입니다.
이를 활용하면 현재 날짜 및 시간 출력, 특정 날짜 생성, 날짜 차이 계산 등이 가능합니다.
DateTime now = DateTime.Now;
Console.WriteLine($"Current Date and Time: {now}");
DateTime now = DateTime.Now;
Console.WriteLine($"Year: {now.Year}"); // 연도 출력
Console.WriteLine($"Month: {now.Month}"); // 월 출력
Console.WriteLine($"Day: {now.Day}"); // 일 출력
Console.WriteLine($"Hour: {now.Hour}"); // 시간 출력
Console.WriteLine($"Minute: {now.Minute}"); // 분 출력
Console.WriteLine($"Second: {now.Second}"); // 초 출력
2️⃣ TimeSpan 클래스란?
TimeSpan은 시간 간격(두 날짜 사이의 차이)를 나타내는 클래스입니다.
이를 이용하면 두 날짜 간의 차이를 계산하거나, 특정 시간만큼 더하거나 빼는 연산이 가능합니다.
TimeSpan duration = new TimeSpan(1, 30, 0);
Console.WriteLine($"Duration : {duration}");
TimeSpan t1 = new TimeSpan(2, 5, 0, 0); // 2일 5시간
TimeSpan t2 = TimeSpan.FromHours(3.5); // 3시간 30분
TimeSpan t3 = TimeSpan.FromMinutes(90); // 90분 (1시간 30분)
Console.WriteLine($"t1: {t1}"); // 2.05:00:00
Console.WriteLine($"t2: {t2}"); // 03:30:00
Console.WriteLine($"t3: {t3}"); // 01:30:00
🐥 마무리..
오늘은 실습으로 콘솔 슈팅 게임을 만들어봤는데 여러가지 개선한뒤에 정리해서 올려봐야겠당.
'공부 > 부트캠프' 카테고리의 다른 글
[멋쟁이사자처럼부트캠프 Unity게임개발 4기] 9일차 : LINQ / 상속 (0) | 2025.03.05 |
---|---|
[멋쟁이사자처럼부트캠프 Unity게임개발 4기] 8일차: 예외처리/리스트/배열리스트/스택/큐 (1) | 2025.03.04 |
[멋쟁이사자처럼부트캠프 Unity게임개발 4기] 6일차 : 함수(메서드), 구조체, 클래스 (1) | 2025.02.27 |
[멋쟁이사자처럼부트캠프 Unity게임개발 4기] 4일차 : 조건문과 반복문 + 콘솔 게임 실습 (0) | 2025.02.25 |
[멋쟁이사자처럼부트캠프 Unity게임개발 4기] 3일차 : 연산자 (0) | 2025.02.24 |