이번 글부터는 Dart의 객체지향 프로그래밍과 관련한 내용을 정리합니다. 때문에 객체지향 프로그래밍(OOP)에 대해 간단하게 개념을 설명하고, Dart에서 클래스와 객체를 어떻게 정의하고 사용하는지 그 방법을 설명하며 예제를 통해 학습할 수 있도록 정리해 보겠습니다.
객체지향 프로그래밍 (OOP) - 클래스와 객체
객체지향 프로그래밍(Object-Oriented Programming, OOP)은 프로그램을 객체(object)라는 기본 단위로 나누어 설계하는 방법입니다. 객체는 데이터(속성, 변수)와 이 데이터를 조작하는 함수(메서드)를 포함합니다. OOP의 주요 개념은 클래스(class)와 객체(object)입니다.
클래스 (Class)
클래스는 객체를 만들기 위한 청사진(템플릿)입니다. 클래스는 객체의 속성과 동작을 정의합니다. Dart에서 클래스를 정의하는 방법을 알아보겠습니다.
class Person {
// 속성 (Properties)
String name;
int age;
// 생성자 (Constructor)
Person(this.name, this.age);
// 메서드 (Method)
void introduce() {
print("안녕하세요, 저는 $name이고, 나이는 $age살 입니다.");
}
}
위 코드에서 `Person` 클래스는 이름과 나이를 속성으로 가지며, 생성자와 `introduce`라는 메서드를 포함하고 있습니다.
객체 (Object)
객체는 클래스로부터 생성된 인스턴스(instance)입니다. 클래스는 설계도이고, 객체는 그 설계도로 만들어진 실제 물건이라 생각하면 됩니다. 이제 `Person` 클래스를 사용해 객체를 만들어보겠습니다.
void main() {
// 객체 생성
Person person1 = Person('홍길동', 30);
// 메서드 호출
person1.introduce();
}
위 코드에서 `Person` 클래스로부터 `person1` 객체를 생성하고, `introduce` 메서드를 호출하여 결과를 출력합니다.
클래스와 객체의 특징
캡슐화 (Encapsulation): 클래스는 데이터를 보호하기 위해 속성과 메서드를 묶습니다.
상속 (Inheritance): 클래스는 다른 클래스로부터 속성과 메서드를 물려받을 수 있습니다.
다형성 (Polymorphism): 동일한 메서드가 클래스에 따라 다르게 동작할 수 있습니다.
클래스와 객체를 활용한 예제
아래는 간단한 은행 계좌 관리 프로그램 예제입니다.
class BankAccount {
String accountHolder;
double balance;
BankAccount(this.accountHolder, this.balance);
void deposit(double amount) {
balance += amount;
print('$amount 원이 입금되었습니다. 현재 잔액: $balance 원');
}
void withdraw(double amount) {
if (amount > balance) {
print('잔액이 부족합니다.');
} else {
balance -= amount;
print('$amount 원이 출금되었습니다. 현재 잔액: $balance 원');
}
}
void displayBalance() {
print('$accountHolder 님의 현재 잔액: $balance 원');
}
}
void main() {
BankAccount account = BankAccount('김철수', 100000);
account.displayBalance();
account.deposit(50000);
account.withdraw(30000);
account.displayBalance();
}
위 예제는 `BankAccount` 클래스를 정의하고, 이를 통해 계좌를 생성한 후 입금, 출금, 잔액 확인을 수행합니다.
참고 자료
이 가이드북을 통해 클래스와 객체의 개념을 이해하고, Dart에서 이를 구현하는 방법을 익히셨기를 바랍니다. 앞으로 더 복잡한 프로그램을 작성할 때에도 이 기본 개념들을 활용해 보세요.
'프로그래밍 언어 > Dart' 카테고리의 다른 글
Dart 상속과 다형성: 예제 코드로 배우는 객체 지향 프로그래밍 - Dart 기초 #10 (0) | 2024.06.12 |
---|---|
Dart 객체지향 프로그래밍: 생성자와 소멸자 개념과 예제 - Dart 기초 #9 (0) | 2024.06.11 |
Dart 프로그래밍 입문자를 위한 함수와 메소드 정의 및 사용법 - Dart 기초 #7 (0) | 2024.06.08 |
Dart List와 Map 완벽 가이드, 조건문과 반복문 예제 포함 - Dart 기초 #6 (0) | 2024.06.07 |
Dart 문자열 선언, 연결, 보간 및 비교 방법. Dart 프로그래밍 가이드 - Dart 기초 #5 (0) | 2024.06.05 |