학습
C# 클래스와 객체 기초
C# 클래스와 객체 기초 — 초급
클래스와 객체 기초
1. 도입 (왜 배워야 하는가)
C#에서 클래스와 객체는 객체 지향 프로그래밍(OOP)의 핵심 개념입니다. 이러한 개념은 소프트웨어 설계와 개발에서 필수적입니다. 클래스는 객체를 생성하기 위한 설계도와 같은 역할을 하며, 객체는 이 설계도를 바탕으로 만들어진 실제 데이터 구조입니다.
이 두 개념을 이해하지 못하면, 복잡한 프로그램을 작성할 때 코드의 재사용성과 유지 보수성이 떨어지게 됩니다. 예를 들어, 쇼핑몰 애플리케이션을 개발할 때 상품, 장바구니, 주문 등을 각각 클래스로 정의하지 않으면 코드가 중복되거나 관리하기 어려워집니다.
2. 핵심 개념 설명
클래스
클래스는 객체를 생성하기 위한 설계도입니다. 클래스를 통해 속성과 메서드를 정의할 수 있습니다.
객체
객체는 클래스에서 정의된 속성과 메서드를 가진 실체입니다. 클래스가 설계도라면, 객체는 그 설계도로 만든 집에 비유할 수 있습니다.
속성
속성은 객체가 가진 데이터입니다. 예를 들어, 자동차 클래스의 속성으로는 색상, 모델, 연료 타입 등이 있을 수 있습니다.
메서드
메서드는 객체가 수행할 수 있는 행동입니다. 자동차 클래스에 "운전하다", "주차하다"와 같은 메서드가 있을 수 있습니다.
| 용어 | 설명 |
|---|---|
| 클래스 | 객체의 설계도 |
| 객체 | 클래스에서 생성된 실체 |
| 속성 | 객체의 데이터 |
| 메서드 | 객체의 행동 |
3. 기본 코드 예제
다음은 간단한 자동차 클래스를 정의하고 객체를 생성하는 예제입니다.
using System;
class Car
{
// 속성 정의
public string Color { get; set; }
public string Model { get; set; }
// 메서드 정의
public void Drive()
{
Console.WriteLine("차가 운전 중입니다.");
}
}
class Program
{
static void Main()
{
// 객체 생성
Car myCar = new Car();
myCar.Color = "빨강"; // 속성 설정
myCar.Model = "소나타"; // 속성 설정
// 메서드 호출
myCar.Drive(); // "차가 운전 중입니다." 출력
}
}
실행 결과
차가 운전 중입니다.
코드 설명
Car클래스를 정의하고, 속성Color와Model을 추가합니다.Drive메서드를 정의하여 차가 운전 중임을 출력합니다.Program클래스의Main메서드에서Car객체myCar를 생성합니다.myCar의 속성Color와Model을 설정합니다.Drive메서드를 호출하여 메시지를 출력합니다.- 잘못된 코드:
- 올바른 코드:
- 잘못된 코드:
- 올바른 코드:
- 클래스는 객체를 생성하기 위한 설계도입니다.
- 객체는 클래스에서 정의된 속성과 메서드를 가진 실체입니다.
- 속성과 메서드를 통해 객체의 데이터와 행동을 정의할 수 있습니다.
- 객체 지향 프로그래밍의 핵심 개념으로 코드의 재사용성과 유지 보수성을 높입니다.
- 다음 학습 주제로는 '상속과 다형성'을 추천합니다. 이를 통해 클래스 간의 관계를 이해하고 더 복잡한 시스템을 설계할 수 있습니다.
4. 실전 활용 예제
1. 쇼핑몰 장바구니 구현
장바구니 클래스를 만들어 사용자가 선택한 상품을 관리할 수 있습니다.
using System;
using System.Collections.Generic;
class Product
{
public string Name { get; set; }
public double Price { get; set; }
}
class ShoppingCart
{
private List<Product> products = new List<Product>();
public void AddProduct(Product product)
{
products.Add(product);
Console.WriteLine($"{product.Name}가 장바구니에 추가되었습니다.");
}
public double GetTotalPrice()
{
double total = 0;
foreach (var product in products)
{
total += product.Price;
}
return total;
}
}
class Program
{
static void Main()
{
ShoppingCart cart = new ShoppingCart();
cart.AddProduct(new Product { Name = "아이폰", Price = 1000 });
cart.AddProduct(new Product { Name = "갤럭시", Price = 900 });
Console.WriteLine($"장바구니 총 금액: {cart.GetTotalPrice()}");
}
}
실행 결과
아이폰가 장바구니에 추가되었습니다.
갤럭시가 장바구니에 추가되었습니다.
장바구니 총 금액: 1900
2. 동물 클래스
서로 다른 동물의 특성을 정의하고, 각각의 행동을 나타낼 수 있는 클래스를 만들 수 있습니다.
using System;
class Animal
{
public string Name { get; set; }
public void Speak()
{
Console.WriteLine($"{Name}가 소리 내고 있습니다.");
}
}
class Program
{
static void Main()
{
Animal dog = new Animal { Name = "강아지" };
dog.Speak(); // "강아지가 소리 내고 있습니다." 출력
}
}
실행 결과
강아지가 소리 내고 있습니다.
5. 흔한 실수와 주의사항
실수 1: 클래스와 객체의 혼동
Car myCar = new Car; // 오류 발생
Car myCar = new Car(); // 괄호를 추가
실수 2: 속성에 대한 접근 오류
Console.WriteLine(myCar.Color); // myCar가 초기화되지 않으면 NullReferenceException 발생
myCar.Color = "파란색"; // 속성을 설정한 후 접근
Console.WriteLine(myCar.Color);