취미노트20 [flutter] 15 객체지향 구조 2, Encapsulation 이번에 알아볼 것Encapsulation (캡슐화)지난 포스팅까지 진행한 Workout Tracker App의 객체지향화 복습 우리가 지난번 작업한 WorkoutManager Class의 구조는 다음과 같다.Propertiesworkouts운동명과 목표횟수를 짝지어진 5개의 객체가 포함된 List 변수workoutIndex운동의 순서를 변경하는 int형 변수resultworkouts운동의 결과를 보여주는 변수MethodsgetWorksoutsToday'오늘의 운동'을 생성한 뒤, return해주는 메소드.workouts의 데이터를 기반으로 Row를 만들어 List로 반환addResultWorkout사용자가 입력한 카운트(운동횟수)를 받아그에 해당하는 결과값(아이콘)을 resultWorkouts에 .. 2024. 9. 5. [flutter] 14 객체지향 구조 1, Abstraction 이번에 알아볼 것객체지향 프로그램의 특징Abstraction (추상화)지난 포스팅까지 진행한 Workout Tracker App의 객체지향화 객체지향과 추상화의 이해List 구조-> 데이터의 단순 나열로, 데이터 간 관계성을 코드를 설계한 개발자 본인만 명확히 인지하고 있음-> 암묵적인 룰. 안정적이지 못함. Class 구조-> 관계성 있는 데이터들의 그룹화를 통해 누구나 관계성을 명확히 인지 가능-> 성문화된 구조. 안정적 절차지향 : 코드의 순차적인 처리에 따라 프로그램이 유기적으로 연결됨오늘의 운동 설정->운동을 한다->운동결과를 평가한다->오늘 소모 칼로리 계산->SNS 자랑하기 객체지향 : 성격별로 데이터와 절차를 개별 그룹으로 묶어서 구조적으로 접근위 절차지향의 프로세스를 객체지향에서.. 2024. 9. 1. [flutter] 13 효율적인 데이터 관리 4, Class 이번 포스팅에서 할 것Class 특성의 이해Constructor의 이해 Class의 개념 List workoutName = [싯업친업푸시업스쿼트버피] List workoutGoal = [50151004530] int workoutIndex = 3 일때, 위 표와 아래 표는 각각 스쿼트 / 45 에 대응한다. 하지만 엄연히 따지면 이 둘은 그저 별개의 리스트들일 뿐이다. 그리하여 개발자 본인이 아닌 타인이 이 표를 보았을 때, 즉각적으로 두 표의 상관관계를 이해하지 못할 수 있다. 그리하여 int goalIndex = 3 이라는 만들어버린다던가 하는 등 코드의 의도를 이해하지 못해 오차를 만들어낼 수 있다. 이를 방지하기 위해서는 [스쿼트의 목표 개수 45개] 관계를 문장화 되지 않은 암묵적 관계가.. 2024. 8. 31. [flutter] 12 효율적인 데이터 관리 3, List 응용 이번 포스팅에서 해 볼 것List 를 응용한 Widget의 구성TextField Widget의 활용Widget을 변수에 담아 활용 *지난번 포스팅 내용에 이어서 진행이번 포스팅에서는 List를 활용한 사용자와 앱의 상호작용이다.목표 횟수를 사용자가 체크하는 기능이다.본인의 운동 기록을 입력하고 제출하면, 목표 달성 여부를 알려주는 기능의 구현이다. 1. 앱 화면 구성앱 구현을 위해 아래의 세 가지 요건을 고려하여 화면을 추가적으로 만들 예정이다.운동 횟수 기록 및 제출하는 텍스트운동결과에 따라 목표 달성 여부를 보여주는 모서리가 라운드 처리 된 카드화면을 꽉 채운 바닥부분 앱 구현을 위해서 먼저 앱 기능과 관계 없이 화면에 고정된 UI의 모양 껍데기만을 먼저 구현해보고, 추후 데이터 연결 및 기능 구.. 2024. 8. 31. [flutter] 11 효율적인 데이터 관리 2, For Loop * 지난 포스팅의 예제에 계속 이어서 학습 반복문은 굉장히 많이 쓰이는 문법이다.지난 포스팅에서 운동명과 횟수를 고정된 형태에서 유연하게 바꾸기 위해 리스트를 사용했었다. 오늘의 운동→주말 운동1. 싯업 501. 싯업 202. 친업 152. 푸시업 503. 스쿼트 1003. 버피 45 4. 스쿼트 200 5.친업 30 하지만 위 표처럼 운동의 갯수 자체와 운동명, 횟수 모든 것들이 변경된다면리스트구조만으로는 대응이 어렵다. 컬럼 이하에 있는 운동의 갯수가 고정되어 있기 때문임. 운동 갯수를 자동으로 생성하는 구조를 만들어야 대응이 가능하다. [dart]에는 총 4가지 루프문이 있다.forfor-inforEachwhile, do-while 하나만 잘 알아두면 나머지는 비슷한 논리로 동작.. 2024. 8. 30. [flutter] 10 효율적인 데이터 관리 1, List 학습을 위한 선행준비 : 데이터가 들어있는 장표 만들어보기 가. 앱 기본골격 셋팅void main() { runApp(const MyApp());}class MyApp extends StatelessWidget { const MyApp({super.key}); @override Widget build(BuildContext context) { return MaterialApp( home: WorkoutTrackerPage(), ); }}class WorkoutTrackerPage extends StatefulWidget { const WorkoutTrackerPage({super.key}); @override State createState() => _WorkoutTra.. 2024. 8. 28. 이전 1 2 3 4 다음