devRenio

1.3 함수와 객체지향 프로그래밍

1.3.1 함수

함수(Functions) : 특정 작업을 수행하는 코드 블록.

  • 함수 선언 :
// 반환값이 없는 함수
void sayHello(String name) {
  print('안녕하세요, $name님!');
}

// 반환값이 있는 함수
int addNumbers(int a, int b) {
  return a + b;
}
  • 화살표 함수(Arrow Function) : 함수가 단일 표현식일 때 간결하게 작성하는 방법.
// 위 addNumbers 함수와 동일한 동작
int add(int a, int b) => a + b;



1.3.2 객체지향 프로그래밍

객체지향 프로그래밍(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입니다.
}
  • 상속(Inheritance) : 기존 클래스(부모)의 속성과 메서드를 물려받아 새로운 클래스(자식)를 만드는 기능.
// 부모 클래스
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);
}
  • 믹스인 (Mixin) : 여러 클래스 계층에서 코드를 재사용할 수 있게 하는 기능. with 키워드를 사용하며, 상속이 아닌 다른 방법으로 클래스에 기능을 추가할 때 유용하다.