728x90
객체지향 개요
데이터 캡슐화(encapsulation)
- 데이터 추상화(abstraction)
- 복잡한 문제를 다루기 위해서 불필요한 부분들은 숨기고 중요한 부분만을 표현
- 재사용의 단위
- 클래스를 통해 객체 단위로 생성되어 움직인다.
- 정보은닉(블랙박스)을 실현하는 장치
- 인터페이스를 제외한 데이터와 함수들을 캡슐 속으로 숨기기 때문에 캡슐화를 통해 정보 은닉이 실현
- public, private, protected 가시성 키워드가 없다. (자바는 있음)
- 다트는 기본이 public 변수이고 밑줄(_)을 붙이면 private 변수이다.
- public 변수는 모든 파일에서 접근이 가능하다.
- private 변수는 해당 파일에서만 접근이 가능하다. (같은 파일 안에서는 클래서 밖에서도 접근 가능)
속성과 메소드
- 속성
- property = attribute = state = member field = member variable
- 메소드
- behavior = method = member function
클래스
멤버변수
class Person {
String? name;
int age = 20;
}
void main() {
final p = Person();
p.name = 'John';
p.age = 32;
print('${p.name} is ${p.age} old.');
}
private 변수로 _ 밑줄(underscore)을 변수 앞에 붙여서 만든다. 그렇다고 완전히 접근이 불가한 것은 아니고 같은 .dart 파일 파일 안에서는 접근이 가능하다.
생성자
대입문 생략 생성자
private 변수 초기화 생성자
_ private 필드 이름이 아닌 일반 매개변수 이름 형태로 객체를 초기화 생성할 수 있는 생성자 예시이다.
const 생성자
getter, setter
_ private 필드에 접근할 수 있는 getter, setter 예시이다.
하지만 막상 다트에서는 어차피 공개되는 속성이라면 굳이 private 변수를 만들어 getter, setter를 불필요하게 만들지 말라고 한다.
자바와 C#에서는 모든 속성을 private으로 만들고 메소드 호출로 되어 있는 getter, setter를 두는 것을 권장한다. 하지만 다트는 getter, setter를 메소드를 두더라도 그 형식이 어차피 속성을 그대로 읽고 쓰는 형태이므로 굳이 번거롭게 private으로 만들어 getter, setter를 만들지 말라는 뜻이다.
// GOOD:
class Box {
var contents;
}
// BAD
class Box {
var _contents;
get contents => _contents;
set contents(value) {
_contents = value;
}
}
728x90
LIST
'Flutter' 카테고리의 다른 글
Flutter - Future , async , await (3) | 2023.11.06 |
---|---|
Flutter - pubspec.yaml (1) | 2023.11.02 |
Flutter - 함수 (4) | 2023.11.02 |
Flutter - 타입 검증 연산자 (1) | 2023.11.02 |
Flutter - NullAware (4) | 2023.11.02 |