====== Tecniche di progettazione: Design patterns ====== * **Docente**: [[http://www.di.unipi.it/~semini|Laura Semini]] * **Programma** [[http://compass2.di.unipi.it/didattica/wif18/share/corsi/corso.asp?id=3294&cds=wif18&anno=2010| Dal sito della segreteria]] * **Orario di ricevimento** prima delle lezioni * **Lectures timetable** Wednesday 11-13 room X1, Thursday 9-11 or 11-13 (see below) room X1 I creeted a doodle to see if we can find a different slot for the Thursday class. Then, in case, cross fingers that I can find a room available: [[https://doodle.com/poll/xvnbztq98f5mbwq8|Please Fill the doodle]] (forget the actual dates, only consider Monday, Tuesday, etc...) ==== Academic Year 2017-2018 ==== * Sept 20, 2017: {{:magistraleinformatica:tdp:dp-l01-introduction2016.pdf|Introduction}} * Sept 21, 2017: {{:magistraleinformatica:tdp:dp-l02-designprinciples2017.pdf |Design Principles}}: : SOLID and {{:magistraleinformatica:tdp:applying-uml-and-patternscpt16.pdf|GRASP chapter 16}}. * Sept 27, 2017: {{ :magistraleinformatica:tdp:dp-l03-designprinciples2017.pdf |Design principles continued (with homework)}} and {{:magistraleinformatica:tdp:applying-uml-and-patternscpt22.pdf|GRASP chapter 22}} * Sept 28, 2017: {{ :magistraleinformatica:tdp:dp-l04a-strategy2017.pdf |Startegy}} and {{ :magistraleinformatica:tdp:dp-l04b-state2017.pdf |State}} * Oct 4, 2017: Homework analysis; Observer (to be continued) * Oct 5, 2017: {{ :magistraleinformatica:tdp:dp-l05-observer2017.pdf |Observer}} (cont'd), {{ :magistraleinformatica:tdp:dp-l06a-mvc-observer.pdf |MVC}}, {{ :magistraleinformatica:tdp:mvc-observer.zip |Counter Example}}; {{ :magistraleinformatica:tdp:dp-l06b-decorator2017.pdf |Decorator}} * Wednesday Oct 11: 11-13: Homework analysis; {{ :magistraleinformatica:tdp:dp-l07-factory2017.pdf |Factory method}} * Thursday Oct 12: 9-11: {{ :magistraleinformatica:tdp:dp-l07-factory2017.pdf |Abstract Factory}}, {{ :magistraleinformatica:tdp:dp-l08-singleton2017.pdf |Singleton}} * Wednesday Oct 18: 11-13 Homework analysis; {{ :magistraleinformatica:tdp:dp-l09-command2017.pdf |Command}} * Thursday Oct 19: 11-13: {{ :magistraleinformatica:tdp:dp-l10a-adapter2017.pdf |Adapter}}, {{ :magistraleinformatica:tdp:dp-l10b-facade2017.pdf |Façade}}, {{ :magistraleinformatica:tdp:uglyduckling.zip |HuglyDuckling}}, {{ :magistraleinformatica:tdp:hometheater.zip |Hometheater}} * Wednesday Oct 25: 11-13 Homework analysis; {{ :magistraleinformatica:tdp:dp-l11visitor2017.pdf |Visitor}} * Thursday Oct 26: 9-11 Lab: {{ :magistraleinformatica:tdp:gameoflife.pdf |Game of life}} * Wednesday Nov 8: 11-13 {{ :magistraleinformatica:tdp:dp-l13-bridge2017.pdf |Bridge}}, {{ :magistraleinformatica:tdp:dp-l113b-template2017.pdf |Template method}} * Thursday Nov 9: 11-13 {{ :magistraleinformatica:tdp:dp-l14abasiccomposite2017.pdf |Composite}}, {{ :magistraleinformatica:tdp:dp-l14b-esercitazione2017.pdf |Lab}}; {{ :magistraleinformatica:tdp:visitorandcomposite.zip |To be completed}} {{ :magistraleinformatica:tdp:visitorandcomposite2.zip |Use this!!!}} * Wednesday Nov 15: 11-13: homework analysis, {{ :magistraleinformatica:tdp:dp-l14a-iterator2017.pdf |Iterator}}, {{ :magistraleinformatica:tdp:dp-l15b-esercitazione2017.pdf |lab}}, and its {{ :magistraleinformatica:tdp:layeredchristmastreelab.zip |code}} * Thursday Nov 16: 9-11: {{ :magistraleinformatica:tdp:dp-l15a-builder2017.pdf |Builder}} * Wednesday Nov 22: 11-13: NO LECTURE THIS WEDNESDAY * Thursday Nov 23: 11-13: Homework Analisys, {{ :magistraleinformatica:tdp:dp-l16-chain2017.pdf |Chain Of Responsibility}} * Wednesday Nov 29: 11-13: Homework Analisys, {{ :magistraleinformatica:tdp:dp-l18-flyweight2017.pdf |Flyweight}} * Thursday Nov 30: 9-11: {{ :magistraleinformatica:tdp:dp-l19a-proxy2017.pdf |Proxy}}, {{ :magistraleinformatica:tdp:dp-l19b-interpreter2017.pdf |Interpreter}}, {{ :magistraleinformatica:tdp:interpretertinyinclass.zip |Lab on Interpreter}} * Wednesday Dec 6: 11-13: Homework Analisys, {{ :magistraleinformatica:tdp:tpd_reactor_proactor.pdf |Reactor and Proactor}} by Sara Vitellaro, with some {{ :magistraleinformatica:tdp:reactorproactorcode.zip |example code}} * Thursday Dec 7: 11-13: {{ :magistraleinformatica:tdp:dp-l20-mediator2017.pdf |Mediator}}, {{ :magistraleinformatica:tdp:dp-l20-memento2017.pdf |Memento}}, {{ :magistraleinformatica:tdp:dp-l21-prototype2017.pdf |Prototype}} * Wednesday Dec 13: 11-13 Analisys of Game Of Life and Homeworks Textbooks: * Applying UML and Patterns, An Introduction to Object-Oriented Analysis and Design and Iterative Development, by Craig Larman, (only two chapters from this book, a copy will be distributed in class.) * Head First Degign Patterns: a "must have". First study here. Some patterns are only sketched, for those, and to learn more on all of them, use the following: * Design Patterns by Gamma, Helm, Johnson, Vlissides: "the book" on design patterns, a complete manual (with italian edition). Examples of code: {{:magistraleinformatica:tdp:headfirstdesignpatterns_code102507.zip|Java examples from the HeadFirst book}}. Also in C++ and C#, at: http://www.headfirstlabs.com/books/hfdp/. [[magistraleinformatica:tdp:previous|Previous years]]