[내배캠 앱창업] Day 12 - OOP

쏘쏠·2025년 12월 9일

1. 오늘 한 일

Dart 객체 지향 프로그래밍(OOP) 기본 개념 학습

클래스 / 객체 / 인스턴스 변수 / static 변수

메서드 / static 메서드

생성자(기본 생성자, 매개변수 생성자, 네임드 생성자)

제네릭 클래스

상속, super, override, final class

예시) Person, Circle, Car, Vehicle

2. 배운 내용 정리

1) 클래스와 객체, 속성(변수)들

클래스(Class): 객체의 설계도, 틀

객체(Object): 클래스로 찍어낸 실제 데이터(붕어빵 틀 vs 붕어빵 비유)

인스턴스 변수

각 객체가 서로 다른 값을 가질 수 있는 변수

객체가 살아 있는 동안 유지 (life cycle = 객체 생명 주기)

지역 변수

메서드/블록 안에서만 쓰고 끝나는 잠깐 쓰는 변수

정적 변수(static)

클래스에 속하는 변수

클래스명.변수로 접근

모든 객체가 값을 공유

요약:

객체마다 다른 값 → 인스턴스 변수

모든 객체가 같이 쓰는 값 → static 변수

2) 메서드 & static 메서드

인스턴스 메서드

객체 기준 동작 정의

내부에서 인스턴스 변수, static 변수 모두 사용 가능

정적 메서드(static)

클래스명.메서드()로 호출

객체 없이 동작해야 할 때 사용

내부에서 인스턴스 변수 사용 불가

3) 생성자(Constructor)

기본 생성자 : 매개변수 없는 기본 형태 (Car())

매개변수 생성자 : Car(this.name, this.models);

네임드 생성자 : Car.fromList(...) 처럼 이름 붙여주는 생성자
→ 다양한 초기화 패턴을 제공할 때 유용

핵심 포인트:

객체 생성 시 반드시 인스턴스 변수가 초기화 되어 있어야 함

생성자는 반환 타입이 없고 클래스 이름과 동일

4) 제네릭 클래스(Generic Class)

형태: class Box< T > { T value; ... }

하나의 클래스 템플릿으로

Box< int >, Box< String > 등 다양한 타입을 재사용 가능

타입에 의존적이지 않게 만들어서 재사용성과 안전성을 동시에 챙김

5) 상속(Inheritance) & OOP

기본 형태:

class Child extends Parent { ... }

부모 → 자식으로 속성과 메서드 상속

super 키워드로 부모의 변수/메서드에 접근

@override 로 메서드/속성 재정의 가능

그대로 쓰기 싫으면 덮어쓰기

super.method()로 기존 동작 + 추가 기능도 가능

final class : 더 이상 상속 불가능한 클래스

OOP 요약:

공통된 속성과 동작은 상위 클래스에

다른 부분만 하위 클래스에 구현
→ 중복 줄이고, 재사용성 높이고, 구조가 깔끔해짐

3. 느낀 점

처음에는 이해하기 쉬웠는데 갑자기 너무 많은 양의 정보가 들어오니까 과부하가 와서 정리 및 예제 풀이가 필요할 것 같다.

profile
Flutter 앱창업 일기장

0개의 댓글