상세 컨텐츠

본문 제목

2. 객체지향 프로그래밍 1

Flutter(Dart 포함)

by 본투비곰손 2023. 9. 1. 22:45

본문

728x90

OOP (Object Oriented Programming)

Class 정의는 설계도 작성

Instance 는 설계도를 사용하여 결과물을 만들어 내는것

void main() {
  Idol blackPink = Idol('블랙핑크', ['지수', '제니', '리사', '로제']);

  print(blackPink.name);
  print(blackPink.members);
  blackPink.sayHello();
  blackPink.introduce();

  Idol bts = Idol('BTS', ['RM', '진', '슈가', '제이홉', '지민', '뷔', '정국']);
  print(bts.name);
  print(bts.members);
  bts.sayHello();
  bts.introduce();
}

// Idol class 선언
// name (이름) - 변수
// members (멤버) - 변수
// sayHello (인사) - 함수
// introduce(소개) - 함수
// constructor(생성자)
class Idol {
  String name;
  List<String> members;
  Idol(String name, List<String> members)
      : this.name = name,
        this.members = members;

  void sayHello() {
    print('안녕하세요. ${this.name}입니다.');
  }

  void introduce() {
    print('저희 멤버는 ${this.members}가 있습니다.');
  }
}

class를 아래와 같이 간결하게 작성할 수 있다.

class Idol {
  String name;
  List<String> members;
  Idol(this.name, this,members);
        
  void sayHello() {
    print('안녕하세요. ${this.name}입니다.');
  }

  void introduce() {
    print('저희 멤버는 ${this.members}가 있습니다.');
  }
}

아래와 같이 named 생성자를 사용하여 작성할 수 있다.

void main() {
  Idol aespa = Idol.fromList([
    ['카리나', '윈터', '지젤', '닝닝'],
    '에스파'
  ]);
  print(aespa.name);
  print(aespa.members);
  aespa.sayHello();
  aespa.introduce();
}

// Idol class 선언
// name (이름) - 변수
// members (멤버) - 변수
// sayHello (인사) - 함수
// introduce(소개) - 함수
// constructor (생성자)
class Idol {
  String name;
  List<String> members;

  Idol.fromList(List values)
      : this.members = values[0],
        this.name = values[1];

  void sayHello() {
    print('안녕하세요. ${this.name}입니다.');
  }

  void introduce() {
    print('저희 멤버는 ${this.members}가 있습니다.');
  }
}

immutable 프로그래밍

void main() {
  Idol aespa = const Idol('에스파', ['카리나', '윈터', '지젤', '닝닝']); 
  //const를 사용할 경우 값이 같으면 같은 인스턴스가 된다.
  Idol aespa2 = const Idol('에스파', ['카리나', '윈터', '지젤', '닝닝']);
  print(aespa.name);
  print(aespa.members);
  aespa.sayHello();
  aespa.introduce();

  print(aespa == aespa2); // const를 사용하면 true 가 출력 된다.
}

// immutable 프로그래밍
class Idol {
  final String name;
  final List<String> members;

  const Idol(this.name, this.members);

  void sayHello() {
    print('안녕하세요. ${this.name}입니다.');
  }

  void introduce() {
    print('저희 멤버는 ${this.members}가 있습니다.');
  }
}
728x90

관련글 더보기