Przejdź do treści stopki
Iron Academy Logo
Aplikacja C#
Aplikacja C#

Inne Kategorie

Projektowanie danych aplikacji (Lekcja 03) — głębokie wejście z Timem Coreyem

Tim Corey
32m 01s

W tej trzeciej lekcji kursu "C# App Start to Finish" Tim Corey przeprowadza nas przez kluczowy etap projektowania danych. Wyjaśnia, że zanim zaczniesz budować interfejs użytkownika lub pisać kod, musisz najpierw zdefiniować strukturę danych, których będzie używać Twoja aplikacja.

W tym artykule zbadamy podejście Tima do projektowania danych do aplikacji śledzenia turnieju, zgodnie z jego dokładnymi wyjaśnieniami i przykładami z wideo. Zamierzamy dokładniej przyjrzeć się tematowi projektowania aplikacji, wykorzystując wideo Tima do zrozumienia, dlaczego projektowanie danych ma znaczenie i jak wpływa na całą aplikację.

Dlaczego dane są najważniejsze

Tim zaczyna lekcję, przypominając nam, że już ustanowiliśmy wymagania i strukturę dla aplikacji. Teraz czas na zbudowanie rzeczywistej struktury danych. Wskazuje, że niektórzy programiści wolą najpierw zaprojektować interfejs użytkownika, ale on uważa, że największy sukces jest osiągalny przy projektowaniu danych jako pierwszych.

Tim wyjaśnia swoją logikę:

"Twoja aplikacja jest niczym bez danych." Wyjaśnia, że aplikacja to zasadniczo pojazd do wyświetlania, manipulowania, zmiany i zapisywania danych.

Następnie podaje przykłady, aby udowodnić swoją rację. Nawet edytor tekstu taki jak Microsoft Word jest zbudowany wokół danych — samego tekstu, formatowania, odstępów itd. Tim posuwa się dalej, pokazując, że nawet gry są oparte na danych. Gra szachowa, na przykład, to tylko zbiór figur, pozycji i ruchów — wszystko to dane. Gra typu strzelanka z perspektywy pierwszej osoby również w dużym stopniu opiera się na danych, takich jak pozycje postaci, prędkość pocisków, wykrywanie trafień, wartości obrażeń i warunki zwycięstwa.

Jego wniosek jest jasny:

"Wszystko kręci się wokół danych."

Dlatego zaczyna od projektowania danych, ponieważ gdy już znasz dane, budowa interfejsu użytkownika staje się łatwiejsza. W przeciwnym razie projektujesz z czystej karty bez kierunku. To podejście pomaga programistom i projektantom, którzy pracują nad narzędziami jak zestawy wizualne, twórcy plakatów czy twórcy logo, ponieważ nawet te aplikacje polegają na usystematyzowanych danych do tworzenia szablonów, czcionek i elementów graficznych.

Planowanie przed kodowaniem

Następnie Tim wyjaśnia swoją preferowaną metodę planowania: Rysuje wszystko na papierze lub tablicy, ponieważ jest łatwo wprowadzać zmiany i dostosowania.

Zdecydowanie zaleca, by nie otwierać jeszcze Visual Studio, podkreślając, że planowanie powinno mieć miejsce poza kodem. Mówi, że planowanie w notatniku lub na bloku jest niezbędne, ponieważ łatwiej jest coś wykreślić i wprowadzać zmiany bez utknięcia w kodzie.

Tim pokazuje uporządkowaną wersję swojego projektu i przechodzi przez nią krok po kroku. Jego pierwszy punkt to:

"Po prostu coś zapisz."

Zaczyna od najbardziej oczywistego obiektu: Zespół.

Budowanie obiektu Zespół

Tim rozpoczyna projektowanie, notując, co jest potrzebne Zespołowi. Identyfikuje dwie główne właściwości:

1. Członkowie zespołu

Zauważa, że zespół potrzebuje ludzi, więc zapisuje listę osób:

"Wiem, że potrzebuję zespołu, który ma ludzi."

Wyjaśnia, że nie ma potrzeby teraz tworzyć obiektu Osoba. Zamiast tego koncentruje się najpierw na Zespole i pisze notatkę, aby utworzyć Osobę później. To utrzymuje projekt skupiony i unika zgubienia głównego obiektu z oczu.

2. Nazwa zespołu

Następnie Tim dodaje nazwę zespołu jako ciąg znaków.

Wyjaśnia, że klasa Zespół jest prosta i potrzebuje tylko kilku kluczowych właściwości. Mówi, że nazwa zespołu powinna być czymś zapadającym w pamięć jak "Tim Bob Maris Su Al" lub "Turniej Pingponga", co pomoże w tworzeniu marki i identyfikacji, podobnie jak firma używa logo, marki lub nazwy firmy.

Projektowanie obiektu Osoba

Następnie Tim projektuje klasę Osoba. Wyjaśnia znaczenie rozdzielenia imienia i nazwiska.

Dlaczego rozdzielać imię i nazwisko?

Tim mówi, że jest to najlepsza praktyka w branży i pomaga w personalizacji, na przykład przez zwracanie się do kogoś po imieniu w e-mailach.

Ostrzega również o problemach z dzieleniem nazwisk:

  • "Van Wilder" to nie "Wilder"

  • "Mary Sue" to nie "Mary"

Więc Tim podkreśla, że rozdzielenie imienia i nazwiska powinno odbywać się na etapie wprowadzania danych, a nie przez późniejsze dzielenie.

Inne właściwości

Tim dodaje więcej pól:

  • Adres e-mail (ciąg)

  • Numer telefonu komórkowego (ciąg)

Podkreśla, że numery telefonów komórkowych powinny być przechowywane jako ciągi znaków, ponieważ nie są one liczbami do obliczeń lub manipulacji. Mogą zawierać formatowanie, takie jak nawiasy lub myślniki.

Tim również wyjaśnia, że używa słowa "właściwości", ponieważ staną się one właściwościami klasy w C#.

Obiekt Turniej

Następnie Tim wprowadza najważniejszy obiekt: Turniej.

Wyjaśnia, że turniej jest centralnym węzłem danych, ponieważ ta aplikacja jest śledzeniem turnieju.

Właściwości turnieju

Tim wymienia, czego potrzebuje turniej:

  1. Nazwa turnieju Mimo że nie było tego w wymaganiach, dodaje ją, ponieważ mogą istnieć wiele turniejów jednocześnie. Nazwa pomaga je odróżnić.

  2. Opłata za uczestnictwo Tim wyjaśnia, że opłata za uczestnictwo pozwala administratorowi naliczać opłaty zespołom przy wejściu. Podkreśla, że opłata za uczestnictwo musi być przechowywana jako dziesiętna, a nie podwójna, ponieważ to pieniądze.

  3. Zespoły uczestniczące Lista zespołów, które wzięły udział w turnieju.

  4. Nagrody Lista nagród, które mogą być zerowe lub więcej.

  5. Rundy Ta część jest skomplikowana. Tim wyjaśnia, że każda runda zawiera zestawienia, więc struktura staje się listą list:

    • Runda 1: lista zestawień

    • Runda 2: lista zestawień

    • Runda 3: lista zestawień Więc, Rundy = Lista

Tim zauważa, że w tym momencie obiekty Nagroda i Zestawienie nie zostały jeszcze utworzone, ale to w porządku, ponieważ zostaną rozwinięte później.

Naturalne klucze i brakujące dane

Tim ostrzega, że podczas planowania mogą zostać pominięte niektóre dane. Rozmawia o naturalnych kluczach i o tym, jak niektórzy programiści używają ich jako identyfikatorów. Na przykład nazwa turnieju może być wyjątkowa i działać jako identyfikator.

Jednak Tim woli użyć niestandardowej właściwości ID:

"Lubię tworzyć własne i nazywać je ID."

Mówi, że jest to łatwiejsze do indeksowania i zarządzania.

Również przypomina:

"To w porządku, jeśli czegoś brakuje."

Zachęca do przeprowadzania badań i patrzenia na przykłady takie jak rejestracja na Amazonie czy kontakty telefoniczne, aby zobaczyć, jakie informacje są zazwyczaj zbierane dla osoby.

Ale ostrzega, by nie myśleć o tym zbyt wiele — błędy się zdarzają i mogą być naprawione później.

Nie planuj zbyt szczegółowo

Tim podkreśla istotną równowagę:

"Dobrze zaplanowana aplikacja, która wciąż jest w notatniku, jest bezużyteczna."

Wyjaśnia, że planowanie jest potrzebne, ale spędzanie zbyt dużo czasu na planowaniu może uniemożliwić faktyczne zbudowanie aplikacji. Zachęca do posuwania się naprzód i zaakceptowania, że projekt będzie się rozwijać.

Obiekt Nagroda

Tim przedstawia obiekt Nagroda i jego właściwości:

  1. Numer miejsca (int) Przykład: 1 dla pierwszego miejsca, 2 dla drugiego.

  2. Nazwa miejsca (ciąg) Przykład: "Champion", "Pierwszy Wicemistrz".

  3. Kwota nagrody (dziesiętna) Kwota pieniędzy za to miejsce.

  4. Procent nagrody (podwójna) Przykład: 0,5 dla 50%

Wyjaśnia, jak system zdecyduje, czy użyć kwoty czy procentu, w zależności od tego, który nie jest zerowy.

Obiekt Zestawienie

Następnie Tim wprowadza obiekt Zestawienie:

  • Wpisy: Lista WpisówZestawienia

  • Zwycięzca: Zespół

  • Numer rundy: int

Wyjaśnia, że wpis w zestawieniu reprezentuje jeden zespół w zestawieniu.

Obiekt WpisZestawienia

Tim opisuje właściwości WpisZestawienia:

  • Zespół

  • Wynik

  • Rodzicielskie Zestawienie

Wyjaśnia, dlaczego wybrał listę wpisów zamiast oddzielnych właściwości zespołu. To zapewnia elastyczność, taką jak porządkowanie wpisów według wyniku.

Wyjaśnia on również cel Parent Matchup:\ Łączy zwycięzcę z jednej rundy z następną rundą.

Podsumowanie - Plan danych ukończony

Tim stwierdza, że te sześć klas (Team, Person, Tournament, Prize, Matchup, MatchupEntry) stanowi fundament aplikacji. Przypomina nam, że plan danych jest kompletny i że następna lekcja skupi się na budowie interfejsu użytkownika.

Kończy mówiąc, że choć ten projekt może się wydawać zagmatwany, stanie się jasny po jego implementacji w kodzie.

Podążając za podejściem Tima do danych, przedstawionym w filmie, masz teraz jasne zrozumienie, jak strukturyzować dane rdzeniowe dla aplikacji śledzącej turnieje. Następny krok to stworzenie interfejsu użytkownika opartego na tych danych, co Tim omawia w Lekcji Czwartej.

Hero Worlddot related to Projektowanie danych aplikacji (Lekcja 03) — głębokie wejście z Timem Coreyem
Hero Affiliate related to Projektowanie danych aplikacji (Lekcja 03) — głębokie wejście z Timem Coreyem

Zarabiaj więcej, dzieląc się tym, co kochasz

Tworzysz treści dla deweloperów pracujących z .NET, C#, Java, Python, czy Node.js? Zamień swoją wiedzę specjalistyczną na dodatkowy dochód!

Zespol wsparcia Iron

Jestesmy online 24 godziny, 5 dni w tygodniu.
Czat
Email
Zadzwon do mnie