새소식

반응형
개발기록/Flutter

[flutter log] 객체지향 프로그래밍

  • -
반응형

안녕하세요 성장형 개발자입니다.

플러터 공부 중입니다
오늘 공부한 내용을 적어보았습니다

공부한 내용 : flutter 객체지향 프로그래밍

ㅇ 필요성
 -> 서로 밀접한 관계가 있는 함수와 변수를 묶어두면 코드 관리가 용이
 -> 클래스(설계도), 인스턴스(설계도를 통해 실제로 만들어진 것)

1. 클래스
 ㅇ 기본
  -> 멤버 변수 : 클래스에 종속된 변수
  -> 메서드 : 클래스에 종속되는 함수, 클래스의 기능을 정의한 함수
  -> this 키워드 : 클래스 내부의 속성을 지칭하고 싶을 때, 현재 클래스를 의미
  -> 스코프 안에 같은 속성 이름이 하나만 존재하면 this 생략 가능

 ㅇ 생성자
  -> 클래스의 인스턴스를 생성하는 메서드(설계도의 실제물건을 생성하는 기능)
  -> 생성자에서 입력받을 변수 -> 일반적으로 final로 선언(인스턴스화한 다음에 혹시라도 변수의 값을 변경하는 실수를 막기 위함)

 ㅇ 프라이빗 변수
  -> 다트에서의 프라이빗 변수는 다른 언어와 정의가 약간 다름
  -> 일반적 : 클래스 내부에서만 사용하는 변수를 칭함
  -> 다트 : 같은 파일에서만 접근 가능한 변수 (다른 파일에서는 접근 불가)
  -> '_변수명' 의 형태로 프라이빗 변수 선언 가능

2. 상속
 ㅇ 공유되는 기능을 상속받는 개념
 ㅇ extends 키워드 사용
 ㅇ 어떤 클래스의 기능을 다른 클래스가 사용할 수 있게 하는 기법
 ㅇ 부모 클래스 : 기능을 물려주는 클래스
 ㅇ 자식 클래스 : 물려받는 클래스, 부모 클래스의 모든 기능을 상속받는다.
 ㅇ 현재 클래스를 지칭하는 this, 부모클래스를 지칭하는 super(부모클래스에 기본 생성자가 있기때문에 부모클래스의 생성자를 실행해줘야함)
 ㅇ 부모 클래스에 공통으로 사용하는 변수와 메서드를 정의하면 자식 클래스들은 해당 값들을 사용할 수 있어 중복 코딩이 필요없어짐

3. 오버라이드
 ㅇ 부모 클래스 or 인터페이스에 정의된 메서드를 재정의할 때 사용
 ㅇ 다트에선 override 키워드 생략 가능 -> 직접 명시하는 게 협업 및 유지보수에 유리

4. 인터페이스
 ㅇ 공통으로 필요한 기능을 정의만 해두는 역할
 ㅇ 다트에는 인터페이스를 지정하는 키워드는 따로 없음
 ㅇ implement 키워드 사용
 ㅇ 반드시 모든 기능을 다시 정의해줘야 함 (애초에 반드시 재정의할 필요가 있는 기능을 정의하는 용도)

5. 믹스인
 ㅇ 특정 클래스에 원하는 기능들만 골라넣을 수 있는 기능
 ㅇ 특정 클래스를 지정해서 속성들을 정의할 수 있음
 ㅇ 지정한 클래스를 상속하는 클래스에서도 사용 가능
 ㅇ 인터페이스처럼 한 개의 클래스에 여러 개의 믹스인을 적용할 수 있음(여러 믹스인을 적용하고 싶으면, 기호로 열거) 
 ㅇ with 키워드 사용

6. 추상
 ㅇ 상속이나 인터페이스로 사용하는 데 필요한 속성만 정의하고 인스턴스화할 수 없도록 하는 기능
 ㅇ 따로 인스턴스화할 일이 없다면 추상 클래스로 선언해서 인스턴스화를 방지하고, 메서드 정의를 자식클래스에 위임할 수 있음
 ㅇ 추상 메서드를 선언할 수 있음 -> 함수의 반환 타입, 이름, 매개변수만 정의하고 함수 바디의 선언을 자식 클래스에서 필수로 정의하도록 강제함
 ㅇ 추상 클래스는 선언까지만 해주면 됨
 ㅇ abstract 키워드 사용
 ㅇ 추상 클래스를 사용하는 클래스에서 추상 클래스에 적용된 메서드를 하나라도 정의하지 않으면 에러 발생
 ㅇ 부모 클래스를 인스턴스화할 일이 없고, 자식 클래스들에 필수적으로 또는 공통적으로 정의돼야 하는 메서드가 존재할 때 사용
 ㅇ "추상 클래스는 인스턴스화가 필요 없는 공통 부모 클래스를 만들 때 사용한다"

7. 제네릭
 ㅇ 클래스나 함수의 정의를 선언할 때가 아니라 인스턴스화하거나 실행할 때로 미룸
 ㅇ 특정 변수의 타입을 하나의 타입으로 제한하고 싶지 않을 때 자주 사용
 ㅇ Map, List, Set 등에서 사용한 <> 사이에 입력되는 값
 ㅇ T : 변수타입 표현, E : 리스트 내부 요소들의 타입 표현, K : 키를 표현, V : 값을 표현

8. 스태틱(정적)
 ㅇ static 키워드 사용
 ㅇ 클래스 자체에 귀속, 다른 변수와 메서드 등 모든 속성은 각 '클래스의 인스턴스'에 귀속
 ㅇ 클래스에 직접 귀속되기 때문에 생성자에서 static값을 지정하지 못함
 ㅇ 인스턴스끼리 공유해야 하는 정보에 지정하면 됨

9. 캐스케이드 연산자
 ㅇ 인스턴스에서 해당 인스턴스의 속성이나 멤버 함수를 연속해서 사용하는 기능
 ㅇ .. 기호 사용
 ㅇ 더 간결한 코드 작성 가능

* 플러터의 모든 위젯은 객체지향 프로그래밍을 통해 구현
 -> 위 내용을 제대로 이해하는게 매우 중요
 -> 객체지향 프로그래밍을 통해 중복 코드를 줄이고 정리가 잘된 효율적인 코드를 작성하는 건 개발자의 필수 덕목

 
코드팩토리의 플러터 프로그래밍
저자는 왕초보 실력을 현업 수준으로 끌어올리기를 목표로 이 책을 썼습니다. 배운 이론을 곧바로 실무에 진짜 유용한 기능을 담은 앱을 만들며 익힐 수 있게 합니다. 모든 앱은 결과가 아니라 실제 프로젝트 현장에서 구현하듯이 과정을 보여주며 만듭니다. 변경하거나 수정한 코드를 확실하게 표시해 따라하기 쉽습니다. [프로젝트 소개] ➝ [사전 지식] ➝ [준비하기] ➝ [UI 구상하기] ➝ [구현하기] ➝ [테스트하기] 순서를 꼭 지켜서 앱 개발을 체계적으로 이끌어줍니다. 초보자 눈높이에 맞추면서, 다트 언어 입문부터 개발과 광고와 배포까지 현업에 도움이 될 실무적이고 활용도 높은 노하우를 담아 설명했기 때문에 탄탄하면서도 빠르게 스킬업되는 자신을 체감하게 될 겁니다.
저자
최지호(코드팩토리)
출판
골든래빗(주)
출판일
2023.01.01
반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.