SlideShare uma empresa Scribd logo
1 de 25
Deixando o seu código mais
POP
com programação orientada a protocolos
O que são?
Protocolos são como contratos que sua
classe/objeto/estrutura concorda em
cumprir.
Mas qual de fato a utilidade deles?
• Delegates
- Métodos obrigatórios
- Métodos opcionais
obj-c
• Traits
• Delegates
- Métodos obrigatórios
- Métodos opcionais
• PAT
- associatedtype
swift
Traits = Extensão de Protocols
Protocolos em Swift permitem que
desenvolvedores aprimorem um conjunto de
tipos sem duplicação de código
Ao invés de criar uma classe,
comece com um protocolo
Ao invés de criar uma classe,
comece com um protocolo
Se não der certo tente uma Struct
Exemplo clássico dos animais
Agora um problema um
pouco menos abstrato
associatedtype
BaseViewController
func displayError()
func userDidLogout()
…. muitas mais funções
Perguntas?
Bruno Bilescky
iOS Developer @VivaReal
@bgondim
github.com/brunogb
Muito Obrigado!
Estamos contratando!!!

Mais conteúdo relacionado

Mais procurados

NãNãNã Nã - Python Refresca até Pensamento
NãNãNã Nã - Python Refresca até PensamentoNãNãNã Nã - Python Refresca até Pensamento
NãNãNã Nã - Python Refresca até PensamentoOsvaldo Santana Neto
 
Critérios de avaliação de linguagens
Critérios de avaliação de linguagensCritérios de avaliação de linguagens
Critérios de avaliação de linguagensPaulo Muniz
 
Pensando fora da caixa
Pensando fora da caixaPensando fora da caixa
Pensando fora da caixaWilliam "Kina"
 
Algoritmos - Paradigmas de Programação
Algoritmos - Paradigmas de ProgramaçãoAlgoritmos - Paradigmas de Programação
Algoritmos - Paradigmas de ProgramaçãoElaine Cecília Gatto
 
Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Valmon Gaudencio
 
Coding Dojo - Apresentação / Instruções
Coding Dojo - Apresentação / InstruçõesCoding Dojo - Apresentação / Instruções
Coding Dojo - Apresentação / InstruçõesPablo Bender
 
Por Que Python É Tão Lento?
Por Que Python É Tão Lento?Por Que Python É Tão Lento?
Por Que Python É Tão Lento?Rudá Moura
 
Coding Dojo - Pycon Br 2008 - PT-BR
Coding Dojo - Pycon Br 2008 - PT-BRCoding Dojo - Pycon Br 2008 - PT-BR
Coding Dojo - Pycon Br 2008 - PT-BRHugo Corbucci
 
Plp aula-02-critérios de avaliação
Plp aula-02-critérios de avaliaçãoPlp aula-02-critérios de avaliação
Plp aula-02-critérios de avaliaçãoJosé Meirelles
 
Paradigmas de Linguagens de Programação - Introdução
Paradigmas de Linguagens de Programação - IntroduçãoParadigmas de Linguagens de Programação - Introdução
Paradigmas de Linguagens de Programação - IntroduçãoAdriano Teixeira de Souza
 
AgileDay2012 - Resumo Coding By Example
AgileDay2012 - Resumo Coding By ExampleAgileDay2012 - Resumo Coding By Example
AgileDay2012 - Resumo Coding By ExampleWildtech
 

Mais procurados (20)

Coding Dojo #GuruPI
Coding Dojo #GuruPICoding Dojo #GuruPI
Coding Dojo #GuruPI
 
Dynamic Types no C# 4.0
Dynamic Types no C# 4.0Dynamic Types no C# 4.0
Dynamic Types no C# 4.0
 
NãNãNã Nã - Python Refresca até Pensamento
NãNãNã Nã - Python Refresca até PensamentoNãNãNã Nã - Python Refresca até Pensamento
NãNãNã Nã - Python Refresca até Pensamento
 
Mulheres desenvolvendo C#
Mulheres desenvolvendo C#Mulheres desenvolvendo C#
Mulheres desenvolvendo C#
 
#Dojo1 - GIT no TCDF
#Dojo1 - GIT no TCDF#Dojo1 - GIT no TCDF
#Dojo1 - GIT no TCDF
 
02 - Introdução a linguagem C# v1.0
02 - Introdução a linguagem C# v1.002 - Introdução a linguagem C# v1.0
02 - Introdução a linguagem C# v1.0
 
Critérios de avaliação de linguagens
Critérios de avaliação de linguagensCritérios de avaliação de linguagens
Critérios de avaliação de linguagens
 
Pensando fora da caixa
Pensando fora da caixaPensando fora da caixa
Pensando fora da caixa
 
Ruby
RubyRuby
Ruby
 
Algoritmos - Paradigmas de Programação
Algoritmos - Paradigmas de ProgramaçãoAlgoritmos - Paradigmas de Programação
Algoritmos - Paradigmas de Programação
 
Python WTFAQ?
Python WTFAQ?Python WTFAQ?
Python WTFAQ?
 
Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.
 
Coding Dojo - Apresentação / Instruções
Coding Dojo - Apresentação / InstruçõesCoding Dojo - Apresentação / Instruções
Coding Dojo - Apresentação / Instruções
 
Por Que Python É Tão Lento?
Por Que Python É Tão Lento?Por Que Python É Tão Lento?
Por Que Python É Tão Lento?
 
Microsoft C#
Microsoft C#Microsoft C#
Microsoft C#
 
Coding Dojo - Pycon Br 2008 - PT-BR
Coding Dojo - Pycon Br 2008 - PT-BRCoding Dojo - Pycon Br 2008 - PT-BR
Coding Dojo - Pycon Br 2008 - PT-BR
 
Plp aula-02-critérios de avaliação
Plp aula-02-critérios de avaliaçãoPlp aula-02-critérios de avaliação
Plp aula-02-critérios de avaliação
 
Paradigmas de Linguagem
Paradigmas de LinguagemParadigmas de Linguagem
Paradigmas de Linguagem
 
Paradigmas de Linguagens de Programação - Introdução
Paradigmas de Linguagens de Programação - IntroduçãoParadigmas de Linguagens de Programação - Introdução
Paradigmas de Linguagens de Programação - Introdução
 
AgileDay2012 - Resumo Coding By Example
AgileDay2012 - Resumo Coding By ExampleAgileDay2012 - Resumo Coding By Example
AgileDay2012 - Resumo Coding By Example
 

Destaque

โชว์รูปภาพในรูปแบบอัลบั้มภาพใน Powerpoint
โชว์รูปภาพในรูปแบบอัลบั้มภาพใน Powerpointโชว์รูปภาพในรูปแบบอัลบั้มภาพใน Powerpoint
โชว์รูปภาพในรูปแบบอัลบั้มภาพใน PowerpointKanchanatep Thongnum
 
Your Digital Footprint - A Flipbook by Sinthiya Sooriyaganthan
Your Digital Footprint - A Flipbook by Sinthiya Sooriyaganthan Your Digital Footprint - A Flipbook by Sinthiya Sooriyaganthan
Your Digital Footprint - A Flipbook by Sinthiya Sooriyaganthan SinthiyaSoori
 
DirectCaption for Transcriptions and Closed Captions
DirectCaption for Transcriptions and Closed CaptionsDirectCaption for Transcriptions and Closed Captions
DirectCaption for Transcriptions and Closed CaptionsDirect Caption
 
Things I Never Regret for Having a Degree
Things I Never Regret for Having a DegreeThings I Never Regret for Having a Degree
Things I Never Regret for Having a DegreeNicoleHart8
 
SQL ELEMENTAL
SQL ELEMENTALSQL ELEMENTAL
SQL ELEMENTALLiss2
 
งานนำเสนอ1
งานนำเสนอ1งานนำเสนอ1
งานนำเสนอ1Chatkal Sutoy
 
الأمراض الشائعة في تسمين الخراف
الأمراض الشائعة في تسمين الخرافالأمراض الشائعة في تسمين الخراف
الأمراض الشائعة في تسمين الخرافmmkaouar
 
事例で学ぶ法的リスクとその対処法
事例で学ぶ法的リスクとその対処法事例で学ぶ法的リスクとその対処法
事例で学ぶ法的リスクとその対処法Kazuki Ishihara
 
Louis vuitton accessories
Louis vuitton accessoriesLouis vuitton accessories
Louis vuitton accessoriesJennifer Smith
 
Images[smallpdf.com]
Images[smallpdf.com]Images[smallpdf.com]
Images[smallpdf.com]iliyla
 

Destaque (20)

Talking musika akta euskaraz
Talking musika akta euskarazTalking musika akta euskaraz
Talking musika akta euskaraz
 
โชว์รูปภาพในรูปแบบอัลบั้มภาพใน Powerpoint
โชว์รูปภาพในรูปแบบอัลบั้มภาพใน Powerpointโชว์รูปภาพในรูปแบบอัลบั้มภาพใน Powerpoint
โชว์รูปภาพในรูปแบบอัลบั้มภาพใน Powerpoint
 
Your Digital Footprint - A Flipbook by Sinthiya Sooriyaganthan
Your Digital Footprint - A Flipbook by Sinthiya Sooriyaganthan Your Digital Footprint - A Flipbook by Sinthiya Sooriyaganthan
Your Digital Footprint - A Flipbook by Sinthiya Sooriyaganthan
 
DirectCaption for Transcriptions and Closed Captions
DirectCaption for Transcriptions and Closed CaptionsDirectCaption for Transcriptions and Closed Captions
DirectCaption for Transcriptions and Closed Captions
 
Kamalkara
KamalkaraKamalkara
Kamalkara
 
Things I Never Regret for Having a Degree
Things I Never Regret for Having a DegreeThings I Never Regret for Having a Degree
Things I Never Regret for Having a Degree
 
Course guide
Course guideCourse guide
Course guide
 
пищ. добавки
пищ. добавкипищ. добавки
пищ. добавки
 
White Paper_RIAB
White Paper_RIABWhite Paper_RIAB
White Paper_RIAB
 
Presentacióntics
PresentaciónticsPresentacióntics
Presentacióntics
 
SQL ELEMENTAL
SQL ELEMENTALSQL ELEMENTAL
SQL ELEMENTAL
 
SITE Institute
SITE InstituteSITE Institute
SITE Institute
 
งานนำเสนอ1
งานนำเสนอ1งานนำเสนอ1
งานนำเสนอ1
 
Interbit
InterbitInterbit
Interbit
 
informa computacion
informa computacioninforma computacion
informa computacion
 
Ppt
PptPpt
Ppt
 
الأمراض الشائعة في تسمين الخراف
الأمراض الشائعة في تسمين الخرافالأمراض الشائعة في تسمين الخراف
الأمراض الشائعة في تسمين الخراف
 
事例で学ぶ法的リスクとその対処法
事例で学ぶ法的リスクとその対処法事例で学ぶ法的リスクとその対処法
事例で学ぶ法的リスクとその対処法
 
Louis vuitton accessories
Louis vuitton accessoriesLouis vuitton accessories
Louis vuitton accessories
 
Images[smallpdf.com]
Images[smallpdf.com]Images[smallpdf.com]
Images[smallpdf.com]
 

Semelhante a Deixando seu código mais POP

Apresentação final
Apresentação finalApresentação final
Apresentação finalvalmon
 
PHP Turbinado com CodeIgniter - Conisli 2011
PHP Turbinado com CodeIgniter - Conisli 2011PHP Turbinado com CodeIgniter - Conisli 2011
PHP Turbinado com CodeIgniter - Conisli 2011Evaldo Junior
 
Desenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando PythonDesenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando PythonFlávio Ribeiro
 
Comparando python com outras linguagens de programação
Comparando python com outras linguagens de programaçãoComparando python com outras linguagens de programação
Comparando python com outras linguagens de programaçãoValore I/O
 
POO2-Pre-32-PadroesProjetos_.pdf
POO2-Pre-32-PadroesProjetos_.pdfPOO2-Pre-32-PadroesProjetos_.pdf
POO2-Pre-32-PadroesProjetos_.pdfAndreCosta502039
 
Clean Code: Por um mundo com códigos melhores - SETI 2017
Clean Code: Por um mundo com códigos melhores - SETI 2017Clean Code: Por um mundo com códigos melhores - SETI 2017
Clean Code: Por um mundo com códigos melhores - SETI 2017Thiago Barradas
 
DotNet Framework e Orientação a Objetos 1 - Introdução
DotNet Framework e Orientação a Objetos 1 - IntroduçãoDotNet Framework e Orientação a Objetos 1 - Introdução
DotNet Framework e Orientação a Objetos 1 - IntroduçãoLorival Smolski Chapuis
 
Bugs, DVCS e tools
Bugs, DVCS e toolsBugs, DVCS e tools
Bugs, DVCS e toolsPaulo Mattos
 
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013Gabriel Rubens
 
Django - A sua cápsula de soluções web em python
Django - A sua cápsula de soluções web em pythonDjango - A sua cápsula de soluções web em python
Django - A sua cápsula de soluções web em pythonPaula Grangeiro
 
Junho 2016 - Django - A sua cápsula de soluções web em python
Junho 2016 - Django - A sua cápsula de soluções web em pythonJunho 2016 - Django - A sua cápsula de soluções web em python
Junho 2016 - Django - A sua cápsula de soluções web em pythonGrupo de Testes Carioca
 
Crescendo profissionalmente com o apoio comunidade
Crescendo profissionalmente com o apoio comunidadeCrescendo profissionalmente com o apoio comunidade
Crescendo profissionalmente com o apoio comunidadeFelipe Nascimento
 
python_para_desenvolvedores.pdf
python_para_desenvolvedores.pdfpython_para_desenvolvedores.pdf
python_para_desenvolvedores.pdfProfIvanSaboia
 
Automação de testes para equipes agile
Automação de testes para equipes agileAutomação de testes para equipes agile
Automação de testes para equipes agileAlini Rebonatto
 
Code Smells: o que eles dizem sobre seu código?
Code Smells: o que eles dizem sobre seu código?Code Smells: o que eles dizem sobre seu código?
Code Smells: o que eles dizem sobre seu código?Elaine Naomi
 

Semelhante a Deixando seu código mais POP (20)

Apresentação final
Apresentação finalApresentação final
Apresentação final
 
PHP Turbinado com CodeIgniter - Conisli 2011
PHP Turbinado com CodeIgniter - Conisli 2011PHP Turbinado com CodeIgniter - Conisli 2011
PHP Turbinado com CodeIgniter - Conisli 2011
 
Desenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando PythonDesenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando Python
 
Comparando python com outras linguagens de programação
Comparando python com outras linguagens de programaçãoComparando python com outras linguagens de programação
Comparando python com outras linguagens de programação
 
POO2-Pre-32-PadroesProjetos_.pdf
POO2-Pre-32-PadroesProjetos_.pdfPOO2-Pre-32-PadroesProjetos_.pdf
POO2-Pre-32-PadroesProjetos_.pdf
 
Clean Code: Por um mundo com códigos melhores - SETI 2017
Clean Code: Por um mundo com códigos melhores - SETI 2017Clean Code: Por um mundo com códigos melhores - SETI 2017
Clean Code: Por um mundo com códigos melhores - SETI 2017
 
Java VS Kotlin
Java VS KotlinJava VS Kotlin
Java VS Kotlin
 
DotNet Framework e Orientação a Objetos 1 - Introdução
DotNet Framework e Orientação a Objetos 1 - IntroduçãoDotNet Framework e Orientação a Objetos 1 - Introdução
DotNet Framework e Orientação a Objetos 1 - Introdução
 
Bugs, DVCS e tools
Bugs, DVCS e toolsBugs, DVCS e tools
Bugs, DVCS e tools
 
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
 
Django - A sua cápsula de soluções web em python
Django - A sua cápsula de soluções web em pythonDjango - A sua cápsula de soluções web em python
Django - A sua cápsula de soluções web em python
 
Junho 2016 - Django - A sua cápsula de soluções web em python
Junho 2016 - Django - A sua cápsula de soluções web em pythonJunho 2016 - Django - A sua cápsula de soluções web em python
Junho 2016 - Django - A sua cápsula de soluções web em python
 
Apresentação c++ UFC-Quixadá
Apresentação c++ UFC-QuixadáApresentação c++ UFC-Quixadá
Apresentação c++ UFC-Quixadá
 
Crescendo profissionalmente com o apoio comunidade
Crescendo profissionalmente com o apoio comunidadeCrescendo profissionalmente com o apoio comunidade
Crescendo profissionalmente com o apoio comunidade
 
python_para_desenvolvedores.pdf
python_para_desenvolvedores.pdfpython_para_desenvolvedores.pdf
python_para_desenvolvedores.pdf
 
A Arte do Código Limpo
A Arte do Código LimpoA Arte do Código Limpo
A Arte do Código Limpo
 
Automação de testes para equipes agile
Automação de testes para equipes agileAutomação de testes para equipes agile
Automação de testes para equipes agile
 
Tdd e projeto_comperio
Tdd e projeto_comperioTdd e projeto_comperio
Tdd e projeto_comperio
 
Code Smells: o que eles dizem sobre seu código?
Code Smells: o que eles dizem sobre seu código?Code Smells: o que eles dizem sobre seu código?
Code Smells: o que eles dizem sobre seu código?
 
Análise de sistemas oo 1
Análise de sistemas oo   1Análise de sistemas oo   1
Análise de sistemas oo 1
 

Deixando seu código mais POP