[TIL] Dart 심화 문법, 쇼핑몰 프로그램 필수 기능 개발

티라노·2024년 10월 29일
0

Today I Learned

목록 보기
8/21

Dart 프로그래밍 1주차 1-9 ~ 1-13 (중간까지)
쇼핑몰 프로그램 개발 시작(필수 기능)

열거형

여러 개의 상수값을 나열한 자료. switch문을 통해 다룰 수 있다.
if문을 사용할 수도 있지만 열거형에는 switch를 쓰는 편이 더 적절하다.
열거문을 출력하려면 values를 통해 객체에 넣어준 후(이때 객체는 List<enumType>으로 추론) 해당 객체를 출력해주면 된다.

  • index가 존재한다.
  • 일단 정의하고 나면 값을 나중에 추가할 수 없다.
  • Set은 중복값을 알아서 제거해주지면 enum은 오류가 발생한다.
  • values를 통해 열거문을 List에 넣어줄 수 있다. (이때 List<enumType>으로 추론)

제네릭

클래스나 함수에서 데이터 타입을 일반화하는 기능

T GenericFunctionName<T> (매개변수) {}

List, Set, Map도 제네릭이다.


함수형 프로그래밍

함수의 연속으로 프로그램을 구성하는 방식. Method Chaining이라고도 부른다.
간단히 요약해서 변수를 따로 지정하지 않고도 함수에 빌트인 함수를 이어서 원하는 값을 찾거나 동작을 수행하는 프로그래밍을 말한다.

주로 쓰는 함수는?

형변환 함수

데이터를 다른 타입으로 변환하는 함수이다.

  • toString(), int.parse(), double.parse(), toList(), toSet(), asMap() 등이 존재한다.

고차 함수

Collection 타입의 요소를 다룰 때 사용하는 함수이다.

  • map : 각 데이터마다 특정 기능을 적용한 새로운 데이터를 반환한다.
  • where() : 특정 조건에 참인 요소만 필터링한 새 데이터를 반환한다.
  • firstWhere()/lastWhere() : where()에 해당되는 요소 중 첫 번째/마지막 요소를 반환한다.
  • reduce() : 데이터의 요소들을 하나의 값으로 결합한다. 어떤 동작을 적용할지 return으로 지정할 수 있다.
  • fold() : reduce()와 같은 기능이지만 초기값(reduce에서는 0번 인덱스)을 지정해줄 수 있어서 빈 데이터에도 사용이 가능하고, 기존 데이터와 다른 타입의 결과물도 반환할 수 있다.

쇼핑몰 프로그램

오늘 구현한 내용은 다음과 같다.

  • Product 클래스
  • main 함수
    • 사용자에게 노출되는 기본 메뉴 화면
    • 사용자가 전달하는 명령어(1, 2, 3, 4)를 받아오는 코드
    • 동작을 지정하는 switch문을 while로 반복
    • 프로그램 종료 기능, 종료 시 한 번 더 묻는 기능
  • Shoppingmall 클래스
    • 생성자, 판매하는 물건 목록 입력
    • 판매하는 물건 목록을 보여주는 showProducts() 함수
    • 금액 총합을 보여주는 showTotal() 함수

addToCart() 함수의 경우 예외 처리가 필요하기 때문에 1-17 강의를 들은 후에 구현하기로 했다.

필수 기능 1번 : 판매하는 상품 목록
필수 기능 2번 : 상품을 장바구니에 추가
필수 기능 3번 : 금액 총합 출력
필수 기능 4번 : 프로그램 종료

도전 기능 1번 : 프로그램을 종료할지 한 번 더 묻는 기능
도전 기능 2번 : 장바구니 초기화
도전 기능 3번 : 장바구니 상품 목록+금액 총합 출력
도전 기능 4번 : 자유롭게 기능 추가

필수 기능 4번으로 해보고 싶은 것

각 상품별로 몇 개씩 장바구니에 들어있는지 출력하는 기능을 만들어보고 싶다. (ex. 양말 4개)

2개의 댓글

comment-user-thumbnail
2024년 10월 30일

앱으로 만들어주세요

1개의 답글