1.3 함수와 객체지향 프로그래밍
함수(Functions) : 특정 작업을 수행하는 코드 블록.
// 반환값이 없는 함수
void sayHello(String name) {
print('안녕하세요, $name님!');
}
// 반환값이 있는 함수
int addNumbers(int a, int b) {
return a + b;
}
// 위 addNumbers 함수와 동일한 동작
int add(int a, int b) => a + b;
객체지향 프로그래밍(OOP) : 현실 세계의 사물을 모델링하여 코드를 구성하는 프로그래밍 패러다임. Dart는 클래스와 객체를 기반으로 OOP를 지원한다.
클래스(Class) : 객체를 생성하기 위한 틀. 객체가 가질 속성(필드)과 행동(메서드)을 정의한다.
객체(Object) : 클래스의 인스턴스. 클래스를 통해 생성된, 실제 데이터를 가진 실체.
생성자(Constructor) : 클래스 이름과 이름이 동일한 특별한 메서드. 객체를 생성할 때 호출되어 속성을 초기화하는 역할을 한다.
// 클래스 정의
class Student {
// 속성 (필드)
String name;
int studentId;
// 생성자
Student(this.name, this.studentId);
// 메서드 (행동)
void introduce() {
print('안녕하세요, 제 이름은 $name이고 학번은 $studentId입니다.');
}
}
// main 함수에서 객체 생성 및 사용
void main() {
// Student 클래스의 객체(인스턴스) 생성
var studentA = Student('공은호', 2024E7403);
studentA.introduce(); // 안녕하세요, 제 이름은 공은호이고 학번은 2024E7403입니다.
}
// 부모 클래스
class Person {
String name;
Person(this.name);
void sayHello() {
print('Hello, I am $name.');
}
}
// 자식 클래스
// Student 클래스가 Person 클래스를 상속받음
class Student extends Person {
int studentId;
// super()를 사용해 부모 클래스 생성자 호출
Student(String name, this.studentId) : super(name);
}