SlideShare a Scribd company logo
1 of 12
Download to read offline
Protocol Oriented
Programming
Luis Chávez - @Spr_Luis
Protocol Oriented Programming
Luis Chávez - @Spr_Luis
Dave Abrahams - Technical lead,
Swift standard library Apple
Protocol Oriented Programming
Luis Chávez - @Spr_Luis
“Swift is a protocol-oriented
programming language.”
Protocol Oriented Programming
Luis Chávez - @Spr_Luis
Swift 1.2
Presentación como tal del
lenguaje, un cambio en la
sintaxis.
Swift 2.0 Protocol extensions.
Protocol Oriented Programming
Luis Chávez - @Spr_Luis
¿Qué es un protocolo?
• Funciones, propiedad y otras implementaciones
que deben ser implementados por una clase,
estructura o enumeración.
• Por sí solo el protocolo no tienen una
implementación.
Object Oriented
Programming
Luis Chávez - @Spr_Luis
Abstracción del mundo real.
Object
Oriented
Programming
Luis Chávez - @Spr_Luis
Protocol
Oriented
Programming
Atributos
Métodos
Instancias
Protocolos
Estructuras
Extensiones
Protocol Oriented Programming
Luis Chávez - @Spr_Luis
Ventajas de la OOP
• Encapsulamiento.
• Control de acceso.
• Abstracción.
• Etc.
Protocol Oriented Programming
Luis Chávez - @Spr_Luis
Desventajas de la OOP
• Datos son por referencia -> Perdida de objetos.
• Herencia no deseada.
• Propiedades deben ser inicializadas.
Protocol Oriented Programming
Luis Chávez - @Spr_Luis
Ventajas de la POP
• Encapsulamiento.
• Control de acceso.
• Abstracción.
• Datos por valor. Realiza una copia.
• No hay que inicializar datos cuando usamos
struct.
• No hay instancias.
Protocol Oriented Programming
Luis Chávez - @Spr_Luis
En pocas palabras…
las extensiones de los protocolos, permiten
mejorar todo un conjunto de tipos, sin hacer
ajustes en subclases, estructuras o enumeraciones
de forma individual.
Protocol Oriented
Programming
Luis Chávez - @Spr_Luis

More Related Content

Viewers also liked

NSCoder Swift - An Introduction to Swift
NSCoder Swift - An Introduction to SwiftNSCoder Swift - An Introduction to Swift
NSCoder Swift - An Introduction to Swift
Andreas Blick
 

Viewers also liked (20)

Simplify your Life with Message Extensions in iOS 10
Simplify your Life with Message Extensions in iOS 10Simplify your Life with Message Extensions in iOS 10
Simplify your Life with Message Extensions in iOS 10
 
NSCoder - iR Control
NSCoder - iR ControlNSCoder - iR Control
NSCoder - iR Control
 
AutoLayout y Size Classes
AutoLayout y Size ClassesAutoLayout y Size Classes
AutoLayout y Size Classes
 
NSCoder Swift - An Introduction to Swift
NSCoder Swift - An Introduction to SwiftNSCoder Swift - An Introduction to Swift
NSCoder Swift - An Introduction to Swift
 
Automatizar captura de pantallas con Fastlane
Automatizar captura de pantallas con FastlaneAutomatizar captura de pantallas con Fastlane
Automatizar captura de pantallas con Fastlane
 
Apple Watch
Apple WatchApple Watch
Apple Watch
 
Evolución MVC
Evolución MVCEvolución MVC
Evolución MVC
 
Alamofire + UITableView
Alamofire + UITableViewAlamofire + UITableView
Alamofire + UITableView
 
Cocoapods
CocoapodsCocoapods
Cocoapods
 
iOS Animations using Pop
iOS Animations using PopiOS Animations using Pop
iOS Animations using Pop
 
Git para novatos
Git para novatosGit para novatos
Git para novatos
 
DIY Uber
DIY UberDIY Uber
DIY Uber
 
Gamificación en Objetos de Aprendizaje
Gamificación en Objetos de AprendizajeGamificación en Objetos de Aprendizaje
Gamificación en Objetos de Aprendizaje
 
Reproductor MP3 - AVFoundation con Swift
Reproductor MP3 - AVFoundation con SwiftReproductor MP3 - AVFoundation con Swift
Reproductor MP3 - AVFoundation con Swift
 
Gitignore
GitignoreGitignore
Gitignore
 
NSCoder Swift - ¿Debo Aprender Swift?
NSCoder Swift - ¿Debo Aprender Swift?NSCoder Swift - ¿Debo Aprender Swift?
NSCoder Swift - ¿Debo Aprender Swift?
 
Introducción a tvOS
Introducción a tvOSIntroducción a tvOS
Introducción a tvOS
 
Realtime Database with iOS and Firebase
Realtime Database with iOS and FirebaseRealtime Database with iOS and Firebase
Realtime Database with iOS and Firebase
 
Desarrollo de apps para AppleWatch con Watchkit
Desarrollo de apps para AppleWatch con WatchkitDesarrollo de apps para AppleWatch con Watchkit
Desarrollo de apps para AppleWatch con Watchkit
 
Integrando Swift y Objective-C
Integrando Swift y Objective-CIntegrando Swift y Objective-C
Integrando Swift y Objective-C
 

Similar to Intro Protocol Oriented Programming

Re evolución robótica
Re evolución robóticaRe evolución robótica
Re evolución robótica
Software Guru
 
voip2day 2012 - Free switch para usuarios de asterisk by joao mesquita
voip2day 2012 - Free switch para usuarios de asterisk by  joao mesquitavoip2day 2012 - Free switch para usuarios de asterisk by  joao mesquita
voip2day 2012 - Free switch para usuarios de asterisk by joao mesquita
VOIP2DAY
 
Webinar Gratuito "OWASP WebScarab"
Webinar Gratuito "OWASP WebScarab"Webinar Gratuito "OWASP WebScarab"
Webinar Gratuito "OWASP WebScarab"
Alonso Caballero
 

Similar to Intro Protocol Oriented Programming (20)

Documertar APIs - Meetup.js
Documertar APIs - Meetup.jsDocumertar APIs - Meetup.js
Documertar APIs - Meetup.js
 
Semana 7 Servicios Web API REST con Mongodb
Semana 7   Servicios Web API REST con MongodbSemana 7   Servicios Web API REST con Mongodb
Semana 7 Servicios Web API REST con Mongodb
 
SharePoint Saturday Barcelona. La importancia de JavaScript en nuestros desar...
SharePoint Saturday Barcelona. La importancia de JavaScript en nuestros desar...SharePoint Saturday Barcelona. La importancia de JavaScript en nuestros desar...
SharePoint Saturday Barcelona. La importancia de JavaScript en nuestros desar...
 
Re evolución robótica
Re evolución robóticaRe evolución robótica
Re evolución robótica
 
Principales características de 10 lenguajes de programacion
Principales características de 10 lenguajes de programacionPrincipales características de 10 lenguajes de programacion
Principales características de 10 lenguajes de programacion
 
Freeswitch para usuarios de asterisk
Freeswitch para usuarios de asteriskFreeswitch para usuarios de asterisk
Freeswitch para usuarios de asterisk
 
voip2day 2012 - Free switch para usuarios de asterisk by joao mesquita
voip2day 2012 - Free switch para usuarios de asterisk by  joao mesquitavoip2day 2012 - Free switch para usuarios de asterisk by  joao mesquita
voip2day 2012 - Free switch para usuarios de asterisk by joao mesquita
 
Webinar Gratuito "OWASP WebScarab"
Webinar Gratuito "OWASP WebScarab"Webinar Gratuito "OWASP WebScarab"
Webinar Gratuito "OWASP WebScarab"
 
FreeSWITCH para usuarios Asterisk
FreeSWITCH para usuarios AsteriskFreeSWITCH para usuarios Asterisk
FreeSWITCH para usuarios Asterisk
 
Semana 7 Servicios Web REST con MongoDB final
Semana 7   Servicios Web REST con MongoDB finalSemana 7   Servicios Web REST con MongoDB final
Semana 7 Servicios Web REST con MongoDB final
 
Java script para desarrolladores SharePoint
Java script para desarrolladores SharePointJava script para desarrolladores SharePoint
Java script para desarrolladores SharePoint
 
Fundamentos para el diseño de una RESTful API pragmática
Fundamentos para el diseño de una RESTful API pragmáticaFundamentos para el diseño de una RESTful API pragmática
Fundamentos para el diseño de una RESTful API pragmática
 
Ontologias
OntologiasOntologias
Ontologias
 
Salesforce III developer day bbva innovation center Madrid by @almazanjl
Salesforce III developer day bbva innovation center Madrid by @almazanjlSalesforce III developer day bbva innovation center Madrid by @almazanjl
Salesforce III developer day bbva innovation center Madrid by @almazanjl
 
Tendencias arquitectura y desarrollo 2019
Tendencias arquitectura y desarrollo 2019Tendencias arquitectura y desarrollo 2019
Tendencias arquitectura y desarrollo 2019
 
Características de 10 lenguajes de programación
Características de 10 lenguajes de programaciónCaracterísticas de 10 lenguajes de programación
Características de 10 lenguajes de programación
 
Introducción a Swift - cyliconvalley
Introducción a Swift - cyliconvalleyIntroducción a Swift - cyliconvalley
Introducción a Swift - cyliconvalley
 
Linq
LinqLinq
Linq
 
1. Arquitecturas y Herramientas de Programación
1. Arquitecturas y Herramientas de Programación1. Arquitecturas y Herramientas de Programación
1. Arquitecturas y Herramientas de Programación
 
Lenguajes del lado del servidor y del lado del usuario
Lenguajes del lado del servidor y del lado del usuarioLenguajes del lado del servidor y del lado del usuario
Lenguajes del lado del servidor y del lado del usuario
 

More from NSCoder Mexico

More from NSCoder Mexico (19)

Aprendizaje reforzado con swift
Aprendizaje reforzado con swiftAprendizaje reforzado con swift
Aprendizaje reforzado con swift
 
In app purchase
In app purchaseIn app purchase
In app purchase
 
Ib designables
Ib designablesIb designables
Ib designables
 
Programación Orientada a Protocolos
Programación Orientada a ProtocolosProgramación Orientada a Protocolos
Programación Orientada a Protocolos
 
Interfaces en interface builder y por codigo
Interfaces en interface builder y por codigoInterfaces en interface builder y por codigo
Interfaces en interface builder y por codigo
 
Introduction Swift
Introduction SwiftIntroduction Swift
Introduction Swift
 
Dependency Managers
Dependency ManagersDependency Managers
Dependency Managers
 
Taller PaintCode
Taller PaintCodeTaller PaintCode
Taller PaintCode
 
VIPER
VIPERVIPER
VIPER
 
Core ML and Computer Vision
Core ML and Computer VisionCore ML and Computer Vision
Core ML and Computer Vision
 
Intro programacion funcional
Intro programacion funcionalIntro programacion funcional
Intro programacion funcional
 
DIY Instagram
DIY InstagramDIY Instagram
DIY Instagram
 
Mathematics en la programación
Mathematics en la programaciónMathematics en la programación
Mathematics en la programación
 
Video juegos con SpriteKit y Swift
Video juegos con SpriteKit y SwiftVideo juegos con SpriteKit y Swift
Video juegos con SpriteKit y Swift
 
Unit Testing en iOS
Unit Testing en iOSUnit Testing en iOS
Unit Testing en iOS
 
Bridgefy SDK
Bridgefy SDKBridgefy SDK
Bridgefy SDK
 
Introduction a ARToolkit
Introduction a ARToolkitIntroduction a ARToolkit
Introduction a ARToolkit
 
Diseño Agil para Desarrolladores
Diseño Agil para DesarrolladoresDiseño Agil para Desarrolladores
Diseño Agil para Desarrolladores
 
Clean Architecture
Clean ArchitectureClean Architecture
Clean Architecture
 

Recently uploaded

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
nicho110
 

Recently uploaded (10)

How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 

Intro Protocol Oriented Programming