Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
OpublikowałWalerian Florkowski Został zmieniony 9 lat temu
1
OOP, Desing Patterns … and more Michał Dubel dubelm@tt.com.pl
2
Clean Code – krótkie wprowadzenie, bardzo krótkie Podstawy OOP - pojęcia SOLID Design Patterns Bibliografia Q&A A wszystko okraszone kodem Agenda
3
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
4
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
5
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 !
6
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
7
Klasa (stan, zachowanie) Hermetyzacja (aka enkapsulacja) Dziedziczenie Polimorfizm OOP - pojęcia
8
Zwierzęta jako przykład polimorficzny OOP – szybki przykład polimorfizmu
9
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
10
Wstrzykiwanie zależności oraz luźne powiązania na rycerskim przykładzie P.S. Nie mylcie „Injection” z „Inversion” ! Dependency Injection - przykład
11
Preferuj kompozycję (MA) nad dziedziczenie (JEST) Open-Closed principle Dependency Inejction Przykład: Kacze Opowieści OOP
12
OOP – chcielibyśmy dodać możliwość latania
16
Czyli wszystko (prawie) o tworzeniu obiektów co chcieliście wiedzieć ale baliście się zapytać. Przykład: Pizza Tworzenie obiektów
17
Jak pozbyć się IF’ów ? No more IF Polimorficznie ! Jak pozbyć się IF’ów ?
22
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 ?
23
Polecane lektury: Robert C. Martin „Clean Code” Joshua Bloch „Effective Java” Eric Freeman, Elisabeth Freeman „Head First, Design Patterns” http://misko.hevery.com/code-reviewers-guide/ Bibliografia
24
Dziękuję za uwagę
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.