Udemy
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
Turn what you know into an opportunity and reach millions around the world.
Learn More
Your cart is empty.
Keep shopping
Warsztat Java #10 - Design Principles i Design Patterns
Rating: 5.0 out of 5(1 rating)
12 students

Warsztat Java #10 - Design Principles i Design Patterns

Java, DRY, SOLID, YAGNI, KISS, wzorce projektowe, Design Principles, Design Patterns
Last updated 1/2025
Polish

What you'll learn

  • DRY (Don't Repeat Yourself): Unikanie duplikacji kodu i promowanie reużywalności.
  • KISS (Keep It Simple, Stupid): Utrzymywanie kodu prostym, zrozumiałym i łatwym w utrzymaniu.
  • YAGNI (You Aren't Gonna Need It): Implementowanie tylko tych funkcji, które są obecnie potrzebne, unikanie nadmiarowości.
  • SOLID: Pięć fundamentalnych zasad projektowania obiektowego
  • Creational Patterns (Wzorce kreacyjne): Tworzenie obiektów w sposób, który jest odpowiedni do danej sytuacji.
  • Structural Patterns (Wzorce strukturalne): Sposoby łączenia obiektów i klas w większe struktury.
  • Behavioral Patterns (Wzorce behawioralne): Sposoby w jakie obiekty współpracują i komunikują się ze sobą.

Course content

2 sections33 lectures9h 11m total length
  • Wstęp1:08
  • #1 Design Principles - Intro6:51
  • #2 Design Principles - DRY, KISS, YAGNI22:18
  • #3 Design Principles - Composition over Inheritance35:51
  • #4 Design Principles - SOLID - Single Responsibility Principle12:20
  • #5 Design Principles - SOLID - Open/Closed Principle7:48
  • #6 Design Principles - SOLID - Liskov Substitution Principle9:45
  • #7 Design Principles - SOLID - Interface Segregation Principle5:06
  • #8 Design Principles - SOLID - Dependency Inversion Principle34:35
  • Test 1 - Design Principles0:09
  • #9 Design Principles - Zadania0:13

Requirements

  • Kurs jest intensywny i wymaga aktywnego uczestnictwa oraz chęci do nauki nowych narzędzi i technik. Otwartość na zdobywanie wiedzy teoretycznej i praktycznej jest kluczowa.
  • Uczestnicy powinni być zaznajomieni z podstawami programowania w Javie, w tym z koncepcjami takimi jak klasy, obiekty, interfejsy i dziedziczenie.

Description

Zapraszamy na warsztat poświęcony zasadom pisania dobrego i czystego kodu oraz wzorcom projektowym w Javie! Kurs ten pomoże Ci zrozumieć, jak stosować sprawdzone zasady programowania oraz wzorce projektowe, aby rozwiązywać typowe problemy w sposób zrozumiały dla innych programistów i unikać ponownego wymyślania koła. W trakcie warsztatu skupimy się na teorii, ale również będziemy pisać kod, aby pokazać praktyczne zastosowanie omawianych technik.

Tematyka warsztatu:

  1. Design Principles (Zasady projektowania):

    • DRY (Don't Repeat Yourself): Unikanie powtarzania kodu i promowanie reużywalności.

    • KISS (Keep It Simple, Stupid): Utrzymywanie kodu prostym i zrozumiałym.

    • YAGNI (You Aren't Gonna Need It): Implementowanie tylko tego, co jest obecnie potrzebne.

    • SOLID: Pięć zasad projektowania obiektowego:

      • Single Responsibility Principle (SRP): Każda klasa powinna mieć tylko jedną odpowiedzialność.

      • Open/Closed Principle (OCP): Klasy powinny być otwarte na rozszerzenie, ale zamknięte na modyfikację.

      • Liskov Substitution Principle (LSP): Obiekty w programie powinny być zastępowalne ich podtypami.

      • Interface Segregation Principle (ISP): Klienci nie powinni być zmuszani do zależności od interfejsów, których nie używają.

      • Dependency Inversion Principle (DIP): Moduły wyższego poziomu nie powinny zależeć od modułów niższego poziomu. Oba powinny zależeć od abstrakcji.

  2. Design Patterns (Wzorce projektowe):

    • Creational Patterns (Wzorce kreacyjne): Singleton, Factory Method, Abstract Factory, Builder, Prototype.

    • Structural Patterns (Wzorce strukturalne): Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy.

    • Behavioral Patterns (Wzorce behawioralne): Chain of Responsibility, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method, Visitor.


Wzorce projektowe na które się natknąć w swojej pracy:


  • Singleton: Zapewnia, że klasa ma tylko jedną instancję i zapewnia globalny punkt dostępu do tej instancji.

  • Factory Method: Definiuje interfejs do tworzenia obiektów, ale pozwala podklasom decydować, którą klasę instancjonować.

  • Abstract Factory: Umożliwia tworzenie rodzin powiązanych lub zależnych obiektów bez określania ich konkretnych klas.

  • Builder: Oddziela konstrukcję skomplikowanego obiektu od jego reprezentacji.

  • Prototype: Pozwala na tworzenie nowych obiektów poprzez klonowanie istniejących instancji.

  • Adapter: Umożliwia współpracę klas o niekompatybilnych interfejsach.

  • Bridge: Oddziela abstrakcję od jej implementacji, dzięki czemu obie mogą zmieniać się niezależnie.

  • Composite: Komponuje obiekty w struktury drzewiaste, umożliwiając traktowanie pojedynczych obiektów i ich kompozycji jednolicie.

  • Decorator: Dynamicznie dodaje nowe funkcje do obiektów bez zmiany ich klasy.

  • Facade: Dostarcza uproszczony interfejs do złożonego systemu.

  • Flyweight: Minimalizuje zużycie pamięci poprzez współdzielenie wspólnych stanów między wieloma obiektami.

  • Proxy: Zastępuje inny obiekt, aby kontrolować dostęp do niego.

  • Chain of Responsibility: Przekazuje żądanie przez łańcuch obiektów, aż któryś z nich obsłuży żądanie.

  • Command: Reprezentuje działanie jako obiekt, umożliwiając opóźnienie jego wykonania lub kolejkowanie.

  • Interpreter: Definiuje gramatykę i interpreter dla prostego języka.

  • Iterator: Umożliwia sekwencyjny dostęp do elementów kolekcji bez ujawniania jej wewnętrznej struktury.

  • Mediator: Definiuje obiekt, który enkapsuluje sposób, w jaki obiekty współpracują.

  • Memento: Przechowuje stan obiektu, aby można go było przywrócić później.

  • Observer: Definiuje zależność jeden-do-wielu między obiektami, tak aby zmiana w jednym obiekcie była automatycznie przekazywana do innych.

  • State: Pozwala obiektowi zmieniać swoje zachowanie, gdy zmienia się jego stan wewnętrzny.

  • Strategy: Definiuje rodzinę algorytmów, które mogą być używane zamiennie.

  • Template Method: Definiuje szkieleton algorytmu, pozwalając podklasom definiować pewne kroki.

  • Visitor: Dodaje nowe operacje do klas bez zmiany tych klas.


Format kursu: Warsztat będzie miał formę wykładów z praktycznymi przykładami kodu. Choć skupimy się na teorii, będziemy również pisać kod, aby pokazać, jak zastosować zasady i wzorce projektowe w praktyce. Materiały będą dostępne w postaci notatek, które możesz przyswajać według własnych preferencji.

Wersja Javy: Minimalna wymagana wersja Javy na Twoim komputerze to 8, ale wersja nie ma większego znaczenia, ponieważ będziemy rozmawiać głównie o zasadach i metodach pisania kodu.

Warsztat ten jest 10. warsztatem w ramach ścieżki Zajavka. Oczywiście możesz go realizować niezależnie od innych moich materiałów.


Czego nauczy się uczestnik?

Uczestnik warsztatu „Design Principles i Design Patterns” zdobędzie kompleksową wiedzę oraz praktyczne umiejętności związane z zasadami pisania czystego kodu i stosowaniem wzorców projektowych w Javie. Warsztat „Design Principles i Design Patterns” jest idealny dla osób, które chcą zrozumieć i efektywnie stosować zasady pisania dobrego i czystego kodu oraz wzorce projektowe w swoich projektach programistycznych. Niezależnie od Twojego poziomu doświadczenia, kurs ten dostarczy Ci niezbędnych narzędzi i wiedzy, abyś mógł lepiej projektować, implementować i utrzymywać swoje aplikacje.

Who this course is for:

  • Początkujących programistów, którzy chcą nauczyć się podstaw zasad projektowania i wzorców projektowych, aby pisać lepszy kod.
  • udentów informatyki i pokrewnych kierunków, którzy pragną zdobyć praktyczne umiejętności, które mogą być użyteczne w ich przyszłej karierze zawodowej.
  • Architektów oprogramowania, którzy potrzebują narzędzi do projektowania systemów oraz komunikacji z zespołem
  • Średniozaawansowanych i zaawansowanych deweloperów, którzy chcą pogłębić swoją wiedzę na temat zasad projektowania i wzorców oraz zastosować je w praktyce.
  • Inżynierów QA i specjalistów ds. testowania, którzy chcą zrozumieć, jak projektowane są systemy.