La programmazione orientata agli oggetti non 竪 quella che vi hanno insegnato a scuola!
Vedremo assieme qual'竪 il significato di questo paradigma di programmazione, spesso frainteso, e i nuovi obiettivi che ci permette di raggiungere nello sviluppo software.
Presentaci坦n oficial de los 100 d鱈as de gesti坦n del Alcalde de Santa Fe de Antioquia, Dr. Saulo Armando Rivera Fern叩ndez, donde se rescatan temas como la salud, educaci坦n, vivienda, seguridad, orden p炭blico, movilidad; entre otros. Como ejes fundamentales para la transformaci坦n de la Ciudad Madre de los antioque単os #todosytodas
Challenge of Image Retrieval, Brighton, 2000 1 ANVIL: a System for the Retrie...Petros Tsonis
油
ANVIL is a system designed for the retrieval of images annotated with short captions. It uses NLP techniques to extract dependency structures from captions and queries, and then applies a robust matching algorithm to recursively explore and compare them. There are currently two main interfaces to ANVIL: a list-based display and a 2D spatial layout that allows users to interact with and navigate between similar images. ANVIL was designed to operate as part of a publicly accessible, WWW-based image retrieval server. Consequently, product-level engineering standards were required. This paper examines both the research aspects of the system and also looks at some of the design and evaluation issues.
Pat Kane's presentation to The Future of Media in Scotland conference, 9/4/13 (http://scotsmanconferences.com/viewconference.aspx?id=29). More from http://www.thoughtland.info
The rise of Web 2.0 technologies for business, Web 2.0 applications has benefited small scale industries. We have also come across a lots of changes in few past years such as increased knowledge sharing and more effective marketing. These benefits often have a measurable effect on the business leading to high source of income and revenue exposure.
BIG Cinemas has opened a new multiplex at Arch Mall in Bengaluru, India. The multiplex has 3 screening rooms with a total capacity of 1019 people. It offers luxury amenities like large screens, reclining seats, and Dolby sound systems. The opening marks BIG Cinemas' entry into the Bengaluru market as the largest cinema chain in India. BIG Cinemas plans to expand further in Southern India by opening 3 new locations in 2010, including another multiplex in Bengaluru.
Health lease investor presentation july 2012HealthLease
油
1) The presentation discusses forward-looking statements about HealthLease Properties REIT's objectives, plans, growth potential, financial forecasts, and industry trends.
2) HealthLease Properties REIT owns 15 high-quality seniors housing and care facilities across the US and Canada, totaling 1,931 beds/suites and leased under triple-net leases.
3) The seniors housing and care industry is expected to see significant growth due to favorable demographic trends of an aging population requiring more care.
56. R. Villano Cityscape. Volume 2, selezione di fotografie originali e inedite dal 2004 al 2016, con colonna sonora. (41,7 Mb; 1 files, 50 diapositive), Chiron dpt Ph@rma, Roma, settembre 2016.
This document provides a socio-economic baseline survey of nine villages adjacent to the Vidunda Mountains in Tanzania. Key findings from household surveys and stakeholder consultations are presented. Communities are highly dependent on natural resources for their livelihoods. Agriculture is the main livelihood activity but is not sufficient on its own. Dependency on firewood is high but alternative energy sources are needed. Awareness of environmental and natural resource management institutions is low. A ten-step socio-economic monitoring plan is proposed to build capacity, provide alternative livelihoods, implement land use planning, and support community-led conservation efforts in the 29 villages over three years. The plan aims to balance environmental protection with local development needs.
This document discusses gathering customer feedback prior to starting a library refurbishment project. It provides examples of different methods that could be used, such as surveys, programme committees, and ethnography. Participants are then instructed to brainstorm ways to address concerns raised in sample feedback and categorize their ideas as standard, difficult to implement, or original but easy to implement solutions. The document concludes by thanking contributors of images used.
This document provides an overview of using Facebook for business purposes. It discusses setting objectives and designing a Facebook page, including page features like posts, photos, videos, and events. It also covers promoting a page through cross-promotion, ads, and engagement strategies. Analytics insights on metrics like reach, engagement, and fans are also summarized. The document aims to help businesses effectively utilize Facebook to achieve their marketing goals.
El documento describe las diferencias y similitudes entre el espa単ol de Am辿rica y el espa単ol de Espa単a. El espa単ol de Am辿rica se diferencia originariamente por su l辿xico y fonolog鱈a, tomando palabras de lenguas amerindias e influencias de lenguas africanas y europeas como el ingl辿s y el franc辿s. Sin embargo, comparte con el espa単ol de Espa単a rasgos morfol坦gicos y de sintaxis conservadores, adem叩s de influencias del andaluz y canario.
Loosely Coupled Complexity - Unleash the power of your domain modelFrancesca1980
油
Common software architectures are full of well-established assumptions. But some of them are flawed, no longer valid or relevant. Changing the rules of the game using DDD, CQRS and Event Sourcing can lead to systems which are more scalable, maintainable and performing. And which are fun to code as well.
Introduzione al Domain Driven Design (DDD)DotNetMarche
油
In questa sessione si approfondir il concetto di Domain Driven Design, un principio di progettazione che pu嘆 essere visto come una forma-mentis per aiutare a concepire e modellare applicazioni enterprise che fanno un forte uso del Domain Model. Questa metodologia, introdotta da Eric Evans, mette in risalto il dominio applicativo di un progetto, costituendo quindi il collante tra il modello analitico e il modello implementativo e trovando la sua naturale applicazione in ambienti di sviluppo agili come Extreme Programming. Come completamento della sessione verranno esaminate alcune tecniche di Layering e pattern architetturali che ben si sposano con questa tecnica.
This document provides a socio-economic baseline survey of nine villages adjacent to the Vidunda Mountains in Tanzania. Key findings from household surveys and stakeholder consultations are presented. Communities are highly dependent on natural resources for their livelihoods. Agriculture is the main livelihood activity but is not sufficient on its own. Dependency on firewood is high but alternative energy sources are needed. Awareness of environmental and natural resource management institutions is low. A ten-step socio-economic monitoring plan is proposed to build capacity, provide alternative livelihoods, implement land use planning, and support community-led conservation efforts in the 29 villages over three years. The plan aims to balance environmental protection with local development needs.
This document discusses gathering customer feedback prior to starting a library refurbishment project. It provides examples of different methods that could be used, such as surveys, programme committees, and ethnography. Participants are then instructed to brainstorm ways to address concerns raised in sample feedback and categorize their ideas as standard, difficult to implement, or original but easy to implement solutions. The document concludes by thanking contributors of images used.
This document provides an overview of using Facebook for business purposes. It discusses setting objectives and designing a Facebook page, including page features like posts, photos, videos, and events. It also covers promoting a page through cross-promotion, ads, and engagement strategies. Analytics insights on metrics like reach, engagement, and fans are also summarized. The document aims to help businesses effectively utilize Facebook to achieve their marketing goals.
El documento describe las diferencias y similitudes entre el espa単ol de Am辿rica y el espa単ol de Espa単a. El espa単ol de Am辿rica se diferencia originariamente por su l辿xico y fonolog鱈a, tomando palabras de lenguas amerindias e influencias de lenguas africanas y europeas como el ingl辿s y el franc辿s. Sin embargo, comparte con el espa単ol de Espa単a rasgos morfol坦gicos y de sintaxis conservadores, adem叩s de influencias del andaluz y canario.
Loosely Coupled Complexity - Unleash the power of your domain modelFrancesca1980
油
Common software architectures are full of well-established assumptions. But some of them are flawed, no longer valid or relevant. Changing the rules of the game using DDD, CQRS and Event Sourcing can lead to systems which are more scalable, maintainable and performing. And which are fun to code as well.
Introduzione al Domain Driven Design (DDD)DotNetMarche
油
In questa sessione si approfondir il concetto di Domain Driven Design, un principio di progettazione che pu嘆 essere visto come una forma-mentis per aiutare a concepire e modellare applicazioni enterprise che fanno un forte uso del Domain Model. Questa metodologia, introdotta da Eric Evans, mette in risalto il dominio applicativo di un progetto, costituendo quindi il collante tra il modello analitico e il modello implementativo e trovando la sua naturale applicazione in ambienti di sviluppo agili come Extreme Programming. Come completamento della sessione verranno esaminate alcune tecniche di Layering e pattern architetturali che ben si sposano con questa tecnica.
Wpc2019 - Distruggere DevOps, la storia di un vero teamAlessandro Alpi
油
Consigli per evitare la distruzione della migrazione culturale verso DevOps. Vedremo un team con "attori" importanti provare a migrare verso buone pratiche e capiremo quanto 竪 difficile arrivare, ma semplice distruggere tutto.
Acadevmy - AngularDay 2018 - Change Detection, Zone.js ed altri mostriFrancesco Sciuti
油
Un talk dedicato agli aspetti pi湛 arcani di Angular tra i quali sono presenti alcuni mostri, che una volta conosciuti non fanno poi cos狸 tanta paura. Approfondiamo quindi alcuni aspetti della Change Detection di Angular, proviamo a capire a cosa serve e come funziona Zone.js e se sono presenti in giro altre creature o miti da sfatare!
Case study: un approccio modulare in un progetto legacyMariano Fiorentino
油
L'utilizzo di Zend Framework 1 all'interno del progetto Link, software usato da una 'fabbrica automobilistica torinese' per fornire servizi ai concessionari. Link 竪 probabilmente il software in php pi湛 grande d'Europa con pi湛 di 6 milioni di righe di codice, nato nel 2003 utilizzando la versione 4 del linguaggio, Il talk illustrer come negli anni si 竪 passati dallo scriversi tutto in casa all'utilizzo dei moduli zend per abbassare i costi di sviluppo, migliorare la scalabilit e limitare le anomalie.">Case study: un approccio modulare in un progetto legacy
Delphi & Dintorni Webinar - Padroneggiare i principi SOLID con DelphiMarco Breveglieri
油
Molti sviluppatori continuano a porsi ancora oggi domande esistenziali, ad esempio "Come posso scrivere codice mantenibile?" oppure "Come posso rendere il codice testabile?". Purtroppo non ci sono keyword, n辿 talismani che possano donare la qualit di essere "buono" al nostro codice senza sforzo, tuttavia 竪 sufficiente rispettare pochi e sani principi di progettazione, detti principi SOLID. In questo webinar vedremo come soddisfare tali principi e scrivere "buon codice" con Delphi, rendendolo stabile, mantenibile, estensibile, comprensibile e scalabile, aprendo nel contempo la porta ad altri scenari visti talvolta con diffidenza, come il Testing, che diverranno cos狸 semplici e addirittura automatici.
5. Ma come? ...ok, nel software?
Programmazione procedurale e strutturata
Paradigma di programmazione che prevede lutilizzo chiamate a blocchi di codice detti
subroutine o anche sottoprogrammi.
Le subroutine possono inoltre essere associate a strutture dati cos狸 da mantenere allineata
la struttura del programma con quella dei dati.
[tratta da wikipedia]
6. Ma come? ...ok, nel software?
Programmazione procedurale e strutturata
Paradigma di programmazione che prevede lutilizzo chiamate a blocchi di codice detti
subroutine o anche sottoprogrammi.
Le subroutine possono inoltre essere associate a strutture dati cos狸 da mantenere allineata
la struttura del programma con quella dei dati.
[tratta da wikipedia]
Programmazione ad oggetti
La programmazione orientata agli oggetti (Object Oriented Programming, in breve OOP) 竪
uno stile di programmazione che deriva da quello classico procedurale, e pu嘆 essere
considerato una sua estensione. Consiste essenzialmente nella creazione di strutture
dati gerarchiche e combina i dati insieme alle operazioni che li manipolano
[tratta da un sito internet]
8. Gli obiettivi che riusciamo a raggiungere
Scomposizione del problema in sotto problemi
Suddivisione del lavoro in pi湛 sviluppatori
Modularizzazione del progetto
9. Gli obiettivi che riusciamo a raggiungere
Scomposizione del problema in sotto problemi
Suddivisione del lavoro in pi湛 sviluppatori
Modularizzazione del progetto
Sono gli stessi obiettivi raggiunti
dalla programmazione procedurale!
10. Gli obiettivi che riusciamo a raggiungere
Scomposizione del problema in sotto problemi
Suddivisione del lavoro in pi湛 sviluppatori
Modularizzazione del progetto
Sono gli stessi obiettivi raggiunti
dalla programmazione procedurale!
Stiamo facendo programmazione procedurale con
una sintassi diversa
11. Gli obiettivi che riusciamo a raggiungere
Scomposizione del problema in sotto problemi
Suddivisione del lavoro in pi湛 sviluppatori
Modularizzazione del progetto
12. Gli obiettivi che riusciamo a raggiungere
Scomposizione del problema in sotto problemi
Suddivisione del lavoro in pi湛 sviluppatori
Modularizzazione del progetto
sono comunque ottimi:
13. Gli obiettivi che riusciamo a raggiungere
Scomposizione del problema in sotto problemi
Suddivisione del lavoro in pi湛 sviluppatori
Modularizzazione del progetto
sono comunque ottimi:
per realizzare un progetto de鍖nito
14. Gli obiettivi che riusciamo a raggiungere
Scomposizione del problema in sotto problemi
Suddivisione del lavoro in pi湛 sviluppatori
Modularizzazione del progetto
sono comunque ottimi:
per realizzare un progetto de鍖nito
per un progetto che resta 鍖sso nel tempo
15. Gli obiettivi che riusciamo a raggiungere
Scomposizione del problema in sotto problemi
Suddivisione del lavoro in pi湛 sviluppatori
Modularizzazione del progetto
sono comunque ottimi:
per realizzare un progetto de鍖nito
per un progetto che resta 鍖sso nel tempo
Purtroppo non stiamo costruendo un palazzo
16. Gli obiettivi che riusciamo a raggiungere
Scomposizione del problema in sotto problemi
Suddivisione del lavoro in pi湛 sviluppatori
Modularizzazione del progetto
17. Gli obiettivi che riusciamo a raggiungere
Scomposizione del problema in sotto problemi
Suddivisione del lavoro in pi湛 sviluppatori
Modularizzazione del progetto
Le necessit dello sviluppo software includono per嘆:
18. Gli obiettivi che riusciamo a raggiungere
Scomposizione del problema in sotto problemi
Suddivisione del lavoro in pi湛 sviluppatori
Modularizzazione del progetto
Le necessit dello sviluppo software includono per嘆:
Flessibilit di fronte al cambiamento
Riuso reale del codice
Mantenere il sistema aperto alla crescita
20. Le necessit dello sviluppo software richiedono
Non moduli statici
ma entit dinamiche
21. Entit dinamiche
Lattenzione 竪 sul comportamento dinamico
Il progetto 竪 il risultato della
collaborazione di diverse entit
22. Entit dinamiche
Permettono di modi鍖care il comportamento
del sistema inserendo nuove entit con
comportamenti differenti
Il sistema 竪 鍖essibile a nuove
richieste senza bisogno di
modi鍖care quanto realizzato
23. Entit dinamiche
Il tuo design 竪 corretto se ogni nuova
modi鍖ca al progetto richiede meno codice
della modi鍖ca precedente
Matteo Vaccari - @xpmatteo
24. Progettare entit dinamiche
Il diagramma delle classi? Statico!
Il comportamento viene descritto dal
diagramma di collaborazione
27. Progettare entit dinamiche
Una automobile ... statica - dinamica
Class diagram:
riceve
informazioni da comunica dati alle
Centralina Pedale Luci
Comanda delle ricevono dati dal
comunica dati al riceve dati dal
RuotaMotrice Cruscotto Volante
28. Progettiamo il comportamento delle entit
1. Devono essere educate tra di loro
2. Devono essere educate verso il programmatore
3. Devono essere predisposte per la collaborazione
30. Educazione verso gli altri oggetti
Keep it shy
The best code is very shy.
Like a four-year old hiding behind a mothers
skirt, code shouldnt reveal too much of itself
and shouldnt be too nosy into others affairs
Andy Hunt & Dave Thomas
31. Educazione verso gli altri oggetti
Tell the other guy
oppure Tell, Dont Ask o Send messages
Non devono preoccuparsi di sapere con chi
stanno parlando o come sar svolta la richiesta
che hanno invocato.
Devono limitarsi a comunicare gentilmente il
loro bisogno al vicino.
33. Educazione verso i programmatori
Ask for things
Nel progetto sono presenti:
1. aree di codice logico (business logic)
2. aree di codice di inizializzazione (new keywords)
34. Educazione verso i programmatori
Ask for things
Nel progetto sono presenti:
1. aree di codice logico (business logic)
2. aree di codice di inizializzazione (new keywords)
Se queste due aree sono intersecate abbiamo:
1. dipendenze nascoste al programmatore
2. dif鍖colt nel realizzare test di unit
35. Educazione verso i programmatori
Avoid global state
Utilizzare uno stato globale mutabile porta a:
1. Dif鍖colt di debugging e test
2. API che mentono al programmatore
36. Educazione verso i programmatori
Avoid global state
Utilizzare uno stato globale mutabile porta a:
1. Dif鍖colt di debugging e test
2. API che mentono al programmatore
Attenzione a:
1. Singleton = AntiPattern
2. Hidden global state (Random, Date, Time)
3. *VM Global State VS Application global state
4. Global state IS TRANSITIVE!
38. Predisposizione al cambiamento
DRY, Dont Repeat Yourself
Every piece of knowledge must have a single,
unambiguous, and authoritative representation
within a system.
Andy Hunt & Dave Thomas
39. Predisposizione al cambiamento
Anti If Campaign
1. Dif鍖cile da leggere
2. Dif鍖cile da testare
3. Freno alla crescita
del progetto
La maggior parte degli if pu嘆 essere rimossa
tramite Polimor鍖smo
40. Predisposizione al cambiamento
Design Pattern
Dividendo le responsabilit di comportamento
permettono al sistema di evolvere secondo
differenti direzioni.
Permettono di intervenire su di un particolare
aspetto della struttura del sistema in modo
indipendente dagli altri aspetti.
41. Predisposizione al cambiamento
Composition instead of Inheritance
Be careful about runaway subclassing
... ITS AGAIN STATIC!
42. Come realizzare ci嘆 in modo sistematico
Refactoring = rimozione delle duplicazioni
attraverso lindividuazione degli smell
Message chains Uncommunicative name Magic numbers
Primitive obsession Inconsistent names Duplicated code
Comments Type embedded in name Duplicated 鍖ow
Long method Long method Embedded expressions
Long class Long parameter list Conditionals
43. Bibliogra鍖a e approfondimenti
1. UML Tutorial: Collaboration Diagrams - Robert C. Martin
2. Keep it DRY, Shy, and Tell the Other Guy - Dave Thomas
3. Clean Code Talks - Misko Hevery
4. Design Patterns - Gang of four
Grazie dellattenzione
Diego Giorgini
tweet me @ogeidix http://www.fruktarbo.com
Questo slide sono rilasciate Creative Commons BY 3.0 http://creativecommons.org/licenses/by/3.0/