OOP, Desing Patterns … and more Michał Dubel

Slides:



Advertisements
Podobne prezentacje
C++ wykład 9 ( ) Szablony.
Advertisements

1 Dzisiejszy wykład Wzorce funkcji Wzorce klas. 2 Wzorce Często pojawia się konieczność pisania podobnych funkcji lub klas operujących na argumentach.
1 Dzisiejszy wykład Wzorce funkcji Wzorce klas Tablica asocjacyjna Składowe statyczne.
Klasy i obiekty.
Zaawansowane metody programowania – Wykład V
Generics w .NET 2.0 Łukasz Rzeszot.
Obiektowe metody projektowania systemów Design Patterns STRATEGY.
Bezpieczeństwo wyjątków w C++: OpenGL
Sposoby implementacji asocjacji
Wzorce projektowe Paweł Ciach.
Marcin Pamuła Mateusz Stefek
Plasterkowanie Leszek Mierzejewski.
Szkolenie dla NaviExpert,
Projektowanie oprogramowania
Organizacja Przedsięwzięć Programistycznych Projektowanie
Obiektowe metody projektowania systemów
Obiektowe metody projektowania systemów
Obiektowe metody projektowania systemów Command Pattern.
Zaawansowane techniki obiektowe
Inżynieria Oprogramowania dla Fizyków
Programowanie zorientowane obiektowo 1 Programowanie zorientowane obiektowo (object-oriented programming) jest to metodologia programowania bazująca na.
Wstęp do programowania obiektowego
Wzorce projektowe (Design Patterns)
Programowanie obiektowe III rok EiT
Robi bo musi, czy Ruby bo lubi?
Projektowanie obiektowe
Komponentowe i rozproszone Jak pisać dobry kod. ZŁY KOD WYGLĄDA TAK...
Źródła: podręcznikopracował: A. Jędryczkowski.
Podstawy inżynierii oprogramowania Zofia Kruczkiewicz
PIO 3_2, Zofia Kruczkiewicz1 Wykład 3 – część druga Iteracyjno-rozwojowy cykl oprogramowania 3.
Projektowanie obiektowe
WPROWADZENIE W ŚWIAT OBIEKTÓW
Programowanie obiektowe Wykład 7 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/20 Dariusz Wardowski.
Projektowanie obiektowe
PIO 2_2, Zofia Kruczkiewicz1 Wykład 2 – część druga Iteracyjno-rozwojowy cykl oprogramowania 2.
Programowanie obiektowe 2013/2014
2 Odizolowanie danych od kodu może prowadzić do przypadkowych zmian danych przez funkcje, które nie są z nimi logicznie związane. Ponadto modyfikacja.
OCPJP Inner classes.
Programowanie w języku C++
Dobry kod OO Jeżeli zapytamy statystycznego programistę z czym kojarzy mu się dobry kod OO to najprawdopodobniej będzie mówił o wzorcach projektowych.
PAT: Persistent Applications Toolkit Aplikacje bazodanowe bez bazy danych Tomasz Nazar.
Spring Framework, Spring Boot
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Entity Framework worth it or not?
Haskell. Dopasowanie do wzorca Jest to operacja, gdzie pewnie wyrażenie sprawdza się ze wzorcem, w którym może znajdować się jedno lub więcej "wolnych.
Design Patterns.: Visitor :.. Plan prezentacji 1. Trochę statystyk. 2. Zadanie problemowe. 3. Rozwiązanie… Visitor. 4. Visitor w UML (a,b,c). 5. Implementacja.
Obiektowe metody projektowania systemów Adapter. Wstęp: „Dostosowanie interfejsu klasy do interfejsu, którego oczekuje użytkownik. Adapter umożliwia współprace.
Obiektowe metody projektowania systemów Abstract Factory design pattern (aka. Kit)
Zakres Wzorce projektowe - kreacyjne -Factory Method -Abstract Factory.
Paweł Starzyk Obiektowe metody projektowania systemów
Programowanie Zaawansowane
Wykład 11 Aplikacje SDI PO11-1 / 22 Single Document Interface 1.Klasy aplikacji SDI 2.Menu systemowe aplikacji SDI 3.Serializacja 4.Tworzenie widoku 5.Tworzenie.
Języki i technologie wytwarzania stron WWW Autor: Michał Walkowski Referat.
Refaktoryzacja „Any fool can write a code that computer understands. Good programers write code that human can understand” – Martin Fowler.
Komponentowe systemy rozproszone Komponenty i zależności.
Inżynieria oprogramowania OOP i zasady SOLID WWW: Jacek Matulewski Instytut Fizyki, UMK.
Rachunek Lambda + Obiektowość część 1. – motywacja
Programowanie Obiektowe – Wykład 6
ZTO Wprowadzenie do TDD, SOLID - Jak pisać dobry kod
Przygody z EventSourcing i CQRS
Programowanie Obiektowe – Wykład 9
(według:
Programowanie Obiektowe – Wykład 2
AOP – Aspect Oriented Programming
Zaawansowane techniki obiektowe
BYDGOSKI FESTIWAL NAUKI
PGO Dziedziczenie Michail Mokkas.
Paradygmaty i języki programowania
Object vs. class (rozdzial 13 The NEURON book)
Zapis prezentacji:

OOP, Desing Patterns … and more Michał Dubel

Clean Code – krótkie wprowadzenie, bardzo krótkie Podstawy OOP - pojęcia SOLID Design Patterns Bibliografia Q&A A wszystko okraszone kodem Agenda

Kod nie musi być długi, aby być nieczytelny public List getThem() { List list1 = new ArrayList<>(); for (int[] x : theList) if (x[0] == 4) list1.add(x); return list1; } Co biznesowo robi ta metoda? Clean Code

Kod nie musi być długi, aby być nieczytelny public List getFlaggedCells() { List flaggedCells = new ArrayList<>(); for (int[] cell : gameBoard) if (cell[STATUS_VALUE] == FLAGGED) flaggedCells.add(cell); return flaggedCells; } Clean Code

Jeszcze lepsze uporządkowanie kodu public List getFlaggedCells() { List flaggedCells = new ArrayList<>(); for (Cell cell : gameBoard) if (cell.isFlagged()) flaggedCells.add(cell); return flaggedCells; } Clean Code – możemy nawet lepiej !

OOP – paradygmat programowania – obiekty mające stan i zachowanie Znamy też: Programowanie Imperatywne (jak działa program) Programowanie proceduralne Programowanie deklaratywne (co chcemy osiągnąć ? Warunki końcowe – a nie jak to osiągnąć) Programowanie funkcyjne (funkcje należą do wartości podstawowych) …oraz wiele innych OOP - podstawy

Klasa (stan, zachowanie) Hermetyzacja (aka enkapsulacja) Dziedziczenie Polimorfizm OOP - pojęcia

Zwierzęta jako przykład polimorficzny OOP – szybki przykład polimorfizmu

S ingle responsibility principle O pen/closed principle L iskov substitution principle I nterface segregation principle D ependency inversion principle SOLID - mnemonic acronym introduced by Michael Feathers for the "first five principles" named by Robert C. Martin in the early 2000s that stands for five basic principles of object- oriented programming and design. SOLID Principles

Wstrzykiwanie zależności oraz luźne powiązania na rycerskim przykładzie P.S. Nie mylcie „Injection” z „Inversion” ! Dependency Injection - przykład

Preferuj kompozycję (MA) nad dziedziczenie (JEST) Open-Closed principle Dependency Inejction Przykład: Kacze Opowieści OOP

OOP – chcielibyśmy dodać możliwość latania

Czyli wszystko (prawie) o tworzeniu obiektów co chcieliście wiedzieć ale baliście się zapytać. Przykład: Pizza Tworzenie obiektów

Jak pozbyć się IF’ów ? No more IF Polimorficznie ! Jak pozbyć się IF’ów ?

Design patterns classification:  Creational patterns:  Singleton  Factory  Factory Method  Structural patterns:  Adapter  Facade  Decorator  Proxy  Behavioarl patterns:  Template Method  Observer  Strategy O czym nie powiedzieliśmy ?

Polecane lektury: Robert C. Martin „Clean Code” Joshua Bloch „Effective Java” Eric Freeman, Elisabeth Freeman „Head First, Design Patterns” Bibliografia

Dziękuję za uwagę