SlideShare uma empresa Scribd logo
1 de 60
Programação Orientada a Objetos
Prof. Charles Fortes
Apresentação do Professor
Programação Orientada a Objetos
Prof. Charles Fortes
Charles Fortes
Programação Orientada a Objetos
Prof. Charles Fortes
Charles Fortes
Líder Técnico na Empresa Prime Systems.
Agilista, apaixonado por desenvolvimento
(Web, Desktop, Mobile, o que for), pai,
amante do Paintball e do Kenjutsu. MTAC -
Microsoft Technical Audience Contributor
100Loop - DotNetRaptors
Programação Orientada a Objetos
Prof. Charles Fortes
Charles Fortes
Líder Técnico na Empresa Prime Systems.
Agilista, apaixonado por desenvolvimento
(Web, Desktop, Mobile, o que for), pai,
amante do Paintball e do Kenjutsu. MTAC -
Microsoft Technical Audience Contributor
100Loop - DotNetRaptors
SlideShare: http://pt.slideshare.net/charleswellingtonfortes
Linkedin: http://br.linkedin.com/in/charlesfortes/
Twitter: @CharlesFortes
Programação Orientada a Objetos
Prof. Charles Fortes
Charles Fortes
Líder Técnico na Empresa Prime Systems.
Agilista, apaixonado por desenvolvimento
(Web, Desktop, Mobile, o que for), pai,
amante do Paintball e do Kenjutsu. MTAC -
Microsoft Technical Audience Contributor
100Loop - DotNetRaptors
Desenvolvimento Web – MVC – Angular.JS – JQuery – SQLServer – MySQL – HTML5 – NoSQL
Programação Orientada a Objetos
Prof. Charles Fortes
Calendário
Programação Orientada a Objetos
Prof. Charles Fortes
Calendário – Provas e Reposições
Agosto Setembro Outubro Novembro Dezembro
Semana 1 2 7 4 2
Semana 2 9 14 11 9
Semana 3 19 16 21 18 16
Semana 4 26 23 28 25
Semana 5 30
Prova 1ºB 30/09/2015 Substitutiva 16/12/2015
Prova Final 02/12/2015
Programação Orientada a Objetos
Prof. Charles Fortes
Calendário - ATPS
Agosto Setembro Outubro Novembro Dezembro
Semana 1 2 7 4 2
Semana 2 9 14 11 9
Semana 3 19 16 21 18 16
Semana 4 26 23 28 25
Semana 5 30
ATPS 1 16/09/2015 ATPS 3 04/11/2015
ATPS 2 07/10/2015 ATPS 4 25/11/2015
Programação Orientada a Objetos
Prof. Charles Fortes
Abstração
Pitágoras
Programação Orientada a Objetos
Prof. Charles Fortes
Abstração
Abstração é a habilidade de concentrar nos aspectos
essenciais de um contexto qualquer, ignorando características
menos importantes ou acidentais
Pitágoras
Pessoa: Fígado, Estômago, Pulmão, Coração
Ou
Pessoa: Nome, Endereço, CPF
Programação Orientada a Objetos
Prof. Charles Fortes
Abstração Leva-se em consideração o domínio da aplicação, os
interesses e relevâncias para o contexto.
Pitágoras
Programação Orientada a Objetos
Prof. Charles Fortes
Classes
Pitágoras
Programação Orientada a Objetos
Prof. Charles Fortes
Classes
Uma estrutura que abstrai um conjunto de objetos com características similares. Uma classe define o
comportamento de seus objetos através de métodos e os estados possíveis destes objetos através
de atributos
Pitágoras
Programação Orientada a Objetos
Prof. Charles Fortes
Classes
Pitágoras
A receita de uma pizza
Programação Orientada a Objetos
Prof. Charles Fortes
Classes
Pitágoras
A planta de uma casa
Programação Orientada a Objetos
Prof. Charles Fortes
Objetos
Pitágoras
Programação Orientada a Objetos
Prof. Charles Fortes
Objetos
uma referência a um local da memória que possui um valor. Um objeto pode ser uma variável,
função, ou estrutura de dados. Com a introdução da programação orientada a objetos, a palavra
objeto refere-se a uma instância de uma classe.
Em programação orientada a objetos, um objeto passa a existir a partir de um "molde" (classe); a
classe define o comportamento do objeto, usando atributos (propriedades) e métodos (ações)
Pitágoras
Programação Orientada a Objetos
Prof. Charles Fortes
Objetos
Pitágoras
A casa construída
Programação Orientada a Objetos
Prof. Charles Fortes
Atributos
Pitágoras
Programação Orientada a Objetos
Prof. Charles Fortes
Atributos
Os Atributos em Programação Orientada a Objetos são os elementos que definem a estrutura de
uma classe.
Um atributo é um dado para o qual cada objeto tem seu próprio valor.
Pitágoras
Programação Orientada a Objetos
Prof. Charles Fortes
Atributos
Pitágoras
Capacidade em Quilos
Dimensões
Cor
Modelo
Marca
Programação Orientada a Objetos
Prof. Charles Fortes
Comportamentos
Pitágoras
Programação Orientada a Objetos
Prof. Charles Fortes
Comportamentos
Em linguagens baseadas em classe eles são definidos na classe. Métodos definem o comportamento
a ser exibido pelas instâncias da classe associada no tempo de execução do programa. Métodos
possuem a propriedade especial que em tempo de execução, possuem acesso aos dados
armazenados em uma instância da classe (ou instância de classe ou objeto de classe ou objeto) que
estão associados e são, desta forma, capazes de controlar o estado da instância. A associação entre
classe e método é chamada de ligação (binding). Um método associado com uma classe é dito estar
ligado (bound) à classe. Métodos podem ser ligados a uma classe em tempo de compilação (ligação
estática) ou a um objeto em tempo de execução (ligação dinâmica).
Pitágoras
Programação Orientada a Objetos
Prof. Charles Fortes
Comportamentos
Pitágoras
Lavar()
Centrifugar()
Parar()
SoltarÁgua()
Enxaguar()
Programação Orientada a Objetos
Prof. Charles Fortes
Encapsulamento
Pitágoras
Programação Orientada a Objetos
Prof. Charles Fortes
Encapsulamento
Técnica que isola os detalhes de implementação dentro de um objeto, expondo o que é necessário a
quem consome ou interage com o objeto. Protegendo e dando mais flexibilidade às mudanças.
Pitágoras
Programação Orientada a Objetos
Prof. Charles Fortes
Encapsulamento
Pitágoras
Com isto podemos por exemplo alterar o
comportamento de um método de forma a não gerar
impactos em quem consome o método.
Correções de bugs e otimizações de código podem ser
realizadas em novas versões de uma classe sem
impactarmos aqueles que a utilizam, contanto que se
mantenha o contrato/assinatura.
Programação Orientada a Objetos
Prof. Charles Fortes
Encapsulamento
Pitágoras
Programação Orientada a Objetos
Prof. Charles Fortes
Modificadores de Acesso
Pitágoras
Programação Orientada a Objetos
Prof. Charles Fortes
Os modificadores de acesso fornecem os níveis de visibilidade necessários para que busquemos o
encapsulamento da informação em nossa classe.
Pitágoras
Modificadores de Acesso
Estes modificadores são caracterizados por palavras chaves que definem se o item será visível a que
nível na sua aplicação, podendo ele ser Publico, Privado, Protegido.
Programação Orientada a Objetos
Prof. Charles Fortes
public
O modificador public deixará visível a classe ou membro para todas as outras
classes, subclasses e pacotes do projeto Java
Pitágoras
Modificadores de Acesso
private
O modificador private deixará visível o atributo apenas para a classe em que este
atributo se encontra.
Programação Orientada a Objetos
Prof. Charles Fortes
protected
O modificador protected deixará visível o atributo para todas as outras classes e
subclasses que pertencem ao mesmo pacote
Pitágoras
Modificadores de Acesso
Padrão do java
Por padrão, a linguagem Java permite acesso aos membros apenas ao pacote
em que ele se encontra
Programação Orientada a Objetos
Prof. Charles Fortes
Pitágoras
Modificadores de Acesso
Modificador Classe Pacote Subclasse Globalmente
Public sim sim sim sim
Protected sim sim sim não
Sem Modificador (Padrão) sim sim não não
Private sim não não não
Programação Orientada a Objetos
Prof. Charles Fortes
Construtores
Pitágoras
Programação Orientada a Objetos
Prof. Charles Fortes
São estruturas de código que são executadas na instanciação de um objeto,
executam o código necessário para a inicialização da entidade e podem fornecer ou
forçar o recebimento de valores iniciais essenciais para a entidade.
Pitágoras
Construtores
Programação Orientada a Objetos
Prof. Charles Fortes
Pitágoras
Construtores
Programação Orientada a Objetos
Prof. Charles Fortes
Por padrão, quando não declarado, é implícito como um construtor que não recebe
parâmetros e não possui um comportamento.
Uma classe pode possuir diversos construtores e estes podem ainda chamar outro
construtor internos, estendendo o comportamento do construtor.
Pitágoras
Construtores
Programação Orientada a Objetos
Prof. Charles Fortes
Polimorfismo
Pitágoras
Programação Orientada a Objetos
Prof. Charles Fortes
Polimorfismo
um tipo base pode ter propriedades e operações que passam para muitos de seus casos
particulares (derivados), sendo redefinidas de maneiras distintas em cada caso particular.
Isso gera diversas propriedades e operações distintas, todas com o mesmo nome e a
mesma origem.
Pitágoras
Programação Orientada a Objetos
Prof. Charles Fortes
Polimorfismo
Pitágoras
mamífero
Emite sons
gatocachorro
Emite sons (i.e. late) Emite sons (i.e. mia)
CLASSE BASE
Método
CLASSES
DERIVADAS
Polimorfismo
Programação Orientada a Objetos
Prof. Charles Fortes
Herança
Pitágoras
18/5/2006 Capacitação Técnica
Herança
• Herança é uma das técnicas de programação mais
poderosas e expressivas da programação
orientada a objetos.
• Quando bem utilizada, a herança possibilita a
construção de programas compactos e elegantes.
• Entretanto, quando mal utilizada, a herança pode
levar à construção de programas
irremediavelmente confusos.
18/5/2006 Capacitação Técnica
Herança
• A herança se fundamenta na idéia de que
algumas classes podem ser construídas como
casos particulares de outras.
• Organizando os conceitos dessa forma no projeto
e construção de um programa, podemos construir
classes especialmente com o propósito de serem
particularizadas.
18/5/2006 Capacitação Técnica
Herança
• Uma classe que admite casos particulares é uma
classe base.
• Uma classe que é uma particularização de uma
classe base é uma classe derivada daquela classe
base.
• Em um programa bem construído, todos os
conceitos expressos nos tipos de dados e
respectivos métodos de uma classe base também
fazem parte da classe derivada.
18/5/2006 Capacitação Técnica
Herança
• Na classe derivada, podemos encontrar
particularizações de tipos de dados e métodos da
classe base, que respondem pelos mesmos nomes
do encontrado na classe base mas têm suas
definições reformuladas.
• Em um programa bem construído, as
particularizações são sempre de fato casos
particulares (especializações) do caso base.
18/5/2006 Capacitação Técnica
Herança
• Por exemplo, poderíamos construir uma classe
(tipos de dados e métodos) para capturar os
conceitos relevantes relativos a telefones.
• Adotando essa classe como base, poderíamos
então construir as classes derivadas telefones
fixos e telefones móveis.
• Os telefones móveis poderiam gerar ainda as
classes derivadas telefones móveis pré-pagos e
telefones móveis pós-pagos.
18/5/2006 Capacitação Técnica
Herança
• Construímos dessa forma uma hierarquia de
classes. Existem conceitos e operações que só
dizem respeito aos telefones móveis pré-pagos, e
alguns conceitos e operações relativos a essa
categoria de telefones têm detalhes que são
inerentes a apenas tais telefones. Os telefones
móveis pré-pagos, entretanto, continuam sendo
telefones, e portanto a eles se aplicam os
conceitos referentes a telefones em geral.
18/5/2006 Capacitação Técnica
Herança
• Uma classe abstrata é uma classe construída
exclusivamente para ser particularizada, ou seja
para funcionar como uma “matriz” de conceitos
específicos que de fato sejam utilizados
diretamente em um programa. Uma classe
abstrata, portanto, não admite instâncias –
somente suas classes derivadas admitem
instâncias.
18/5/2006 Capacitação Técnica
Herança
• Uma classe final é, em um certo sentido, o
contrário de uma classe virtual. Uma classe final
não admite classes derivadas, e portanto só pode
ser utilizada diretamente.
• Exercício: para que serve uma classe final
abstrata?
• RESPOSTA: para nada.
• Se é abstrata, não admite instâncias diretamente.
Se é final, não admite derivadas.
18/5/2006 Capacitação Técnica
Herança
• Polimorfismo: se duas classes derivadas são
construídas a partir da mesma classe base, pode
ocorrer de um mesmo conceito (por exemplo um
nome de método que caracteriza uma
determinada operação) tenha diferentes
implementações nas diferentes classes. Esse
fenômeno é denominado polimorfismo – um
mesmo conceito assume diferentes formas,
dependendo do seu contexto caracterizado pela
classe em que se encontra.
Programação Orientada a Objetos
Prof. Charles Fortes
Sobrecarga/Sobrescrita
Pitágoras
Programação Orientada a Objetos
Prof. Charles Fortes
Sobrecarga
Adicionar novos comportamentos a um método. Durante a execução a assinatura difere
qual dos dois devem ser executados.
public int soma(int num1, int num2){
...
}
public int soma(float num1, float num2){
...
}
Pitágoras
Programação Orientada a Objetos
Prof. Charles Fortes
Sobrescrita
Sobrescrever comportamentos herdados de uma classe superior.
@Overide
public string toString(){
super.toString();
System.out.println(“Aeeeeeeeeeee o/”);
}
Pitágoras
Programação Orientada a Objetos
Prof. Charles Fortes
Swing - AWT
Pitágoras
Programação Orientada a Objetos
Prof. Charles Fortes
Swing - AWT
Pitágoras
Swing Awt
Componentes independentes de
plataforma
Depende da plataforma
Diferentes apresentações (lookAndFeel) Não suportado
Conjunto maior de componentes Poucos componentes do SO
Apenas 1 “peer” com o SO a janela Um “peer” por componente
Desenho 100% com componentes do
java
Desenho pelo SO
Muita coisa pronta e abstraída Reimplementa tudo na mão
Programação Orientada a Objetos
Prof. Charles Fortes
S.O.L.I.D
Pitágoras
18/5/2006 Capacitação Técnica
Como construir bons métodos
• Um método bem projetado tem uma única função.
• O código deve ser auto-explicativo.
• Variáveis globais devem ser evitadas.
• Os parâmetros devem ser auto-explicativos e em
pequena quantidade (7 é um bom limite superior).
18/5/2006 Capacitação Técnica
Como construir bons métodos
• Métodos devem implementar abstrações do
problema modelado.
• Um bom método deve ser coeso: ter uma e apenas
uma função.
• Um bom programa deve seguir convenções de
construção:
• Variáveis devem ter nomes padronizados.
• Os parâmetros devem ser organizados de uma forma padrão,
p.ex. obedecendo à ordem
entrada/alteração/saída/mensagens de erro.
18/5/2006 Capacitação Técnica
Como construir bons métodos
• Todos os parâmetros de um método devem ser
utilizados (ou seja, não devem existir parâmetros
desnecessários).
• Encapsulamento: variáveis e métodos privados
devem ser preferidos com relação aos públicos.
Programação Orientada a Objetos
Prof. Charles Fortes
Dúvidas?

Mais conteúdo relacionado

Destaque

Conceitos – Do Homem à Máquina
Conceitos – Do Homem à MáquinaConceitos – Do Homem à Máquina
Conceitos – Do Homem à MáquinaCharles Fortes
 
PE2 - Funções e Structs
PE2 - Funções e StructsPE2 - Funções e Structs
PE2 - Funções e StructsCharles Fortes
 
PE-I - Apresentação Professor
PE-I - Apresentação ProfessorPE-I - Apresentação Professor
PE-I - Apresentação ProfessorCharles Fortes
 
Programação Estruturada 2 - Revisão C
Programação Estruturada 2 - Revisão CProgramação Estruturada 2 - Revisão C
Programação Estruturada 2 - Revisão CCharles Fortes
 
IA - Apresentação do Professor
IA - Apresentação do ProfessorIA - Apresentação do Professor
IA - Apresentação do ProfessorCharles Fortes
 
LPC - aula 1 - Introdução .NET
LPC  - aula 1 - Introdução .NETLPC  - aula 1 - Introdução .NET
LPC - aula 1 - Introdução .NETCharles Fortes
 
Sistemas Operacionais - Aula 9 - Gerencia de Recursos
Sistemas Operacionais - Aula 9 - Gerencia de RecursosSistemas Operacionais - Aula 9 - Gerencia de Recursos
Sistemas Operacionais - Aula 9 - Gerencia de RecursosCharles Fortes
 
PE1 - Comandos de Decisão
PE1 - Comandos de DecisãoPE1 - Comandos de Decisão
PE1 - Comandos de DecisãoCharles Fortes
 
Programação Estruturada 2 - Apresentação do Professor
Programação Estruturada 2 - Apresentação do ProfessorProgramação Estruturada 2 - Apresentação do Professor
Programação Estruturada 2 - Apresentação do ProfessorCharles Fortes
 
Sistemas Operacionais - Aula 8 - Sincronização e Comunicação entre Processos
Sistemas Operacionais - Aula 8 - Sincronização e Comunicação entre ProcessosSistemas Operacionais - Aula 8 - Sincronização e Comunicação entre Processos
Sistemas Operacionais - Aula 8 - Sincronização e Comunicação entre ProcessosCharles Fortes
 
LPC - Apresentação do Professor
LPC - Apresentação do ProfessorLPC - Apresentação do Professor
LPC - Apresentação do ProfessorCharles Fortes
 
PE1 - Revisão e Matéria sobre Laços (FOR, WHILE, DO-WHILE)
PE1 - Revisão e Matéria sobre Laços (FOR, WHILE, DO-WHILE)PE1 - Revisão e Matéria sobre Laços (FOR, WHILE, DO-WHILE)
PE1 - Revisão e Matéria sobre Laços (FOR, WHILE, DO-WHILE)Charles Fortes
 
IA - Introdução Inteligência Artificial
IA - Introdução Inteligência ArtificialIA - Introdução Inteligência Artificial
IA - Introdução Inteligência ArtificialCharles Fortes
 
Medição de esforço - Como combrar meus freelas
Medição de esforço - Como combrar meus freelasMedição de esforço - Como combrar meus freelas
Medição de esforço - Como combrar meus freelasCharles Fortes
 
Construindo Apps Com SignalR
Construindo Apps Com SignalRConstruindo Apps Com SignalR
Construindo Apps Com SignalRIvan Paulovich
 
Programação Orientada a Objetos parte 2
Programação Orientada a Objetos parte 2Programação Orientada a Objetos parte 2
Programação Orientada a Objetos parte 2Elaine Cecília Gatto
 
C# 6.0 .net coders
C# 6.0   .net codersC# 6.0   .net coders
C# 6.0 .net codersRenato Groff
 

Destaque (20)

Conceitos – Do Homem à Máquina
Conceitos – Do Homem à MáquinaConceitos – Do Homem à Máquina
Conceitos – Do Homem à Máquina
 
PE2 - Funções e Structs
PE2 - Funções e StructsPE2 - Funções e Structs
PE2 - Funções e Structs
 
PE-I - Apresentação Professor
PE-I - Apresentação ProfessorPE-I - Apresentação Professor
PE-I - Apresentação Professor
 
Programação Estruturada 2 - Revisão C
Programação Estruturada 2 - Revisão CProgramação Estruturada 2 - Revisão C
Programação Estruturada 2 - Revisão C
 
IA - Apresentação do Professor
IA - Apresentação do ProfessorIA - Apresentação do Professor
IA - Apresentação do Professor
 
LPC - aula 1 - Introdução .NET
LPC  - aula 1 - Introdução .NETLPC  - aula 1 - Introdução .NET
LPC - aula 1 - Introdução .NET
 
Sistemas Operacionais - Aula 9 - Gerencia de Recursos
Sistemas Operacionais - Aula 9 - Gerencia de RecursosSistemas Operacionais - Aula 9 - Gerencia de Recursos
Sistemas Operacionais - Aula 9 - Gerencia de Recursos
 
PE1 - Comandos de Decisão
PE1 - Comandos de DecisãoPE1 - Comandos de Decisão
PE1 - Comandos de Decisão
 
Programação Estruturada 2 - Apresentação do Professor
Programação Estruturada 2 - Apresentação do ProfessorProgramação Estruturada 2 - Apresentação do Professor
Programação Estruturada 2 - Apresentação do Professor
 
Sistemas Operacionais - Aula 8 - Sincronização e Comunicação entre Processos
Sistemas Operacionais - Aula 8 - Sincronização e Comunicação entre ProcessosSistemas Operacionais - Aula 8 - Sincronização e Comunicação entre Processos
Sistemas Operacionais - Aula 8 - Sincronização e Comunicação entre Processos
 
LPC - Apresentação do Professor
LPC - Apresentação do ProfessorLPC - Apresentação do Professor
LPC - Apresentação do Professor
 
PE1 - Revisão e Matéria sobre Laços (FOR, WHILE, DO-WHILE)
PE1 - Revisão e Matéria sobre Laços (FOR, WHILE, DO-WHILE)PE1 - Revisão e Matéria sobre Laços (FOR, WHILE, DO-WHILE)
PE1 - Revisão e Matéria sobre Laços (FOR, WHILE, DO-WHILE)
 
IA - Introdução Inteligência Artificial
IA - Introdução Inteligência ArtificialIA - Introdução Inteligência Artificial
IA - Introdução Inteligência Artificial
 
Introdução ao DDD
Introdução ao DDDIntrodução ao DDD
Introdução ao DDD
 
Introdução ao TDD
Introdução ao TDDIntrodução ao TDD
Introdução ao TDD
 
MVC Pattern
MVC PatternMVC Pattern
MVC Pattern
 
Medição de esforço - Como combrar meus freelas
Medição de esforço - Como combrar meus freelasMedição de esforço - Como combrar meus freelas
Medição de esforço - Como combrar meus freelas
 
Construindo Apps Com SignalR
Construindo Apps Com SignalRConstruindo Apps Com SignalR
Construindo Apps Com SignalR
 
Programação Orientada a Objetos parte 2
Programação Orientada a Objetos parte 2Programação Orientada a Objetos parte 2
Programação Orientada a Objetos parte 2
 
C# 6.0 .net coders
C# 6.0   .net codersC# 6.0   .net coders
C# 6.0 .net coders
 

Semelhante a Pitagoras - Introdução a Programação Orientada a Objetos - Revisão Final

Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetosCleyton Ferrari
 
Coletanea UML e OO (ESAF) - Jaime Correia
Coletanea UML e OO (ESAF) - Jaime CorreiaColetanea UML e OO (ESAF) - Jaime Correia
Coletanea UML e OO (ESAF) - Jaime CorreiaWalter Cunha
 
Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos Luis Ferreira
 
Introdução a poo
Introdução a pooIntrodução a poo
Introdução a pooSedu
 
03 - Orientação a objetos e classes em C# v1.0
03 - Orientação a objetos e classes em C# v1.003 - Orientação a objetos e classes em C# v1.0
03 - Orientação a objetos e classes em C# v1.0César Augusto Pessôa
 
Inteligência Artificial
Inteligência ArtificialInteligência Artificial
Inteligência Artificialkennedyaraujo
 
Apresentação curso de Extensão em Java (UERJ-IME) v1
Apresentação curso de Extensão em Java (UERJ-IME) v1Apresentação curso de Extensão em Java (UERJ-IME) v1
Apresentação curso de Extensão em Java (UERJ-IME) v1Marcelo Zeferino
 
02 - Orientação a objetos e revisão de C# v1.5
02 - Orientação a objetos e revisão de C# v1.502 - Orientação a objetos e revisão de C# v1.5
02 - Orientação a objetos e revisão de C# v1.5César Augusto Pessôa
 
PHP: Programando com orientação a Objetos
PHP: Programando com orientação a ObjetosPHP: Programando com orientação a Objetos
PHP: Programando com orientação a ObjetosPablo Dall'Oglio
 
Criando Framework - Conceitos, Estratégias e Dicas
Criando Framework - Conceitos, Estratégias e DicasCriando Framework - Conceitos, Estratégias e Dicas
Criando Framework - Conceitos, Estratégias e DicasNorton Guimarães
 

Semelhante a Pitagoras - Introdução a Programação Orientada a Objetos - Revisão Final (20)

Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetos
 
Coletanea UML e OO (ESAF) - Jaime Correia
Coletanea UML e OO (ESAF) - Jaime CorreiaColetanea UML e OO (ESAF) - Jaime Correia
Coletanea UML e OO (ESAF) - Jaime Correia
 
Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos
 
Introdução a poo
Introdução a pooIntrodução a poo
Introdução a poo
 
Inteligência Artificial
Inteligência ArtificialInteligência Artificial
Inteligência Artificial
 
03 - Orientação a objetos e classes em C# v1.0
03 - Orientação a objetos e classes em C# v1.003 - Orientação a objetos e classes em C# v1.0
03 - Orientação a objetos e classes em C# v1.0
 
Inteligência Artificial
Inteligência ArtificialInteligência Artificial
Inteligência Artificial
 
Apresentação curso de Extensão em Java (UERJ-IME) v1
Apresentação curso de Extensão em Java (UERJ-IME) v1Apresentação curso de Extensão em Java (UERJ-IME) v1
Apresentação curso de Extensão em Java (UERJ-IME) v1
 
Aula orientação a objetos
Aula orientação a objetosAula orientação a objetos
Aula orientação a objetos
 
Java 00 Poo
Java 00 PooJava 00 Poo
Java 00 Poo
 
Oficina 1 Confoa 2013 - Parte 3 - Interoperabilidade e repositórios - josé c...
Oficina 1  Confoa 2013 - Parte 3 - Interoperabilidade e repositórios - josé c...Oficina 1  Confoa 2013 - Parte 3 - Interoperabilidade e repositórios - josé c...
Oficina 1 Confoa 2013 - Parte 3 - Interoperabilidade e repositórios - josé c...
 
Virada Tecnológica 2017
Virada Tecnológica 2017Virada Tecnológica 2017
Virada Tecnológica 2017
 
02 - Orientação a objetos e revisão de C# v1.5
02 - Orientação a objetos e revisão de C# v1.502 - Orientação a objetos e revisão de C# v1.5
02 - Orientação a objetos e revisão de C# v1.5
 
Adasoft apresentacao
Adasoft apresentacaoAdasoft apresentacao
Adasoft apresentacao
 
Apresentação faef
Apresentação faefApresentação faef
Apresentação faef
 
Apresentação faef
Apresentação faefApresentação faef
Apresentação faef
 
PHP: Programando com orientação a Objetos
PHP: Programando com orientação a ObjetosPHP: Programando com orientação a Objetos
PHP: Programando com orientação a Objetos
 
Orientacao a Objetos
Orientacao a ObjetosOrientacao a Objetos
Orientacao a Objetos
 
Criando Framework - Conceitos, Estratégias e Dicas
Criando Framework - Conceitos, Estratégias e DicasCriando Framework - Conceitos, Estratégias e Dicas
Criando Framework - Conceitos, Estratégias e Dicas
 
aula3_python.pptx
aula3_python.pptxaula3_python.pptx
aula3_python.pptx
 

Mais de Charles Fortes

Acesso a banco de dados com entity framework
Acesso a banco de dados com entity frameworkAcesso a banco de dados com entity framework
Acesso a banco de dados com entity frameworkCharles Fortes
 
Introdução a Desenvolvimento de Jogos HTML 5 para Windows 8 com Html5Quintus
Introdução a Desenvolvimento de Jogos HTML 5 para Windows 8 com Html5QuintusIntrodução a Desenvolvimento de Jogos HTML 5 para Windows 8 com Html5Quintus
Introdução a Desenvolvimento de Jogos HTML 5 para Windows 8 com Html5QuintusCharles Fortes
 
Economia global: França e Inglaterra
Economia global: França e InglaterraEconomia global: França e Inglaterra
Economia global: França e InglaterraCharles Fortes
 
Sistemas Operacionais - Aula 6 - Estrutura do Sistema Operacional
Sistemas Operacionais - Aula 6 - Estrutura do Sistema OperacionalSistemas Operacionais - Aula 6 - Estrutura do Sistema Operacional
Sistemas Operacionais - Aula 6 - Estrutura do Sistema OperacionalCharles Fortes
 
Sistemas Operacionais - Aula 5 - Concorrência
Sistemas Operacionais - Aula 5 - ConcorrênciaSistemas Operacionais - Aula 5 - Concorrência
Sistemas Operacionais - Aula 5 - ConcorrênciaCharles Fortes
 
Sistemas Operacionais - Aula 4 - Revisão e Exercícios
Sistemas Operacionais - Aula 4 - Revisão e ExercíciosSistemas Operacionais - Aula 4 - Revisão e Exercícios
Sistemas Operacionais - Aula 4 - Revisão e ExercíciosCharles Fortes
 
Sistemas Operacionais - Aula 3 - Hardware e Software
Sistemas Operacionais - Aula 3 - Hardware e SoftwareSistemas Operacionais - Aula 3 - Hardware e Software
Sistemas Operacionais - Aula 3 - Hardware e SoftwareCharles Fortes
 
Sistemas Operacionais - Aula 2 - Visão Geral de Sistemas Operacionais
Sistemas Operacionais - Aula 2 - Visão Geral de Sistemas OperacionaisSistemas Operacionais - Aula 2 - Visão Geral de Sistemas Operacionais
Sistemas Operacionais - Aula 2 - Visão Geral de Sistemas OperacionaisCharles Fortes
 
Sistemas Operacionais - Aula 1 - História e Introdução a SO
Sistemas Operacionais - Aula 1 - História e Introdução a SOSistemas Operacionais - Aula 1 - História e Introdução a SO
Sistemas Operacionais - Aula 1 - História e Introdução a SOCharles Fortes
 
Apresentação prof e materia
Apresentação prof e materiaApresentação prof e materia
Apresentação prof e materiaCharles Fortes
 
Desenvolvimento de software seguro
Desenvolvimento de software seguroDesenvolvimento de software seguro
Desenvolvimento de software seguroCharles Fortes
 

Mais de Charles Fortes (11)

Acesso a banco de dados com entity framework
Acesso a banco de dados com entity frameworkAcesso a banco de dados com entity framework
Acesso a banco de dados com entity framework
 
Introdução a Desenvolvimento de Jogos HTML 5 para Windows 8 com Html5Quintus
Introdução a Desenvolvimento de Jogos HTML 5 para Windows 8 com Html5QuintusIntrodução a Desenvolvimento de Jogos HTML 5 para Windows 8 com Html5Quintus
Introdução a Desenvolvimento de Jogos HTML 5 para Windows 8 com Html5Quintus
 
Economia global: França e Inglaterra
Economia global: França e InglaterraEconomia global: França e Inglaterra
Economia global: França e Inglaterra
 
Sistemas Operacionais - Aula 6 - Estrutura do Sistema Operacional
Sistemas Operacionais - Aula 6 - Estrutura do Sistema OperacionalSistemas Operacionais - Aula 6 - Estrutura do Sistema Operacional
Sistemas Operacionais - Aula 6 - Estrutura do Sistema Operacional
 
Sistemas Operacionais - Aula 5 - Concorrência
Sistemas Operacionais - Aula 5 - ConcorrênciaSistemas Operacionais - Aula 5 - Concorrência
Sistemas Operacionais - Aula 5 - Concorrência
 
Sistemas Operacionais - Aula 4 - Revisão e Exercícios
Sistemas Operacionais - Aula 4 - Revisão e ExercíciosSistemas Operacionais - Aula 4 - Revisão e Exercícios
Sistemas Operacionais - Aula 4 - Revisão e Exercícios
 
Sistemas Operacionais - Aula 3 - Hardware e Software
Sistemas Operacionais - Aula 3 - Hardware e SoftwareSistemas Operacionais - Aula 3 - Hardware e Software
Sistemas Operacionais - Aula 3 - Hardware e Software
 
Sistemas Operacionais - Aula 2 - Visão Geral de Sistemas Operacionais
Sistemas Operacionais - Aula 2 - Visão Geral de Sistemas OperacionaisSistemas Operacionais - Aula 2 - Visão Geral de Sistemas Operacionais
Sistemas Operacionais - Aula 2 - Visão Geral de Sistemas Operacionais
 
Sistemas Operacionais - Aula 1 - História e Introdução a SO
Sistemas Operacionais - Aula 1 - História e Introdução a SOSistemas Operacionais - Aula 1 - História e Introdução a SO
Sistemas Operacionais - Aula 1 - História e Introdução a SO
 
Apresentação prof e materia
Apresentação prof e materiaApresentação prof e materia
Apresentação prof e materia
 
Desenvolvimento de software seguro
Desenvolvimento de software seguroDesenvolvimento de software seguro
Desenvolvimento de software seguro
 

Pitagoras - Introdução a Programação Orientada a Objetos - Revisão Final

  • 1. Programação Orientada a Objetos Prof. Charles Fortes Apresentação do Professor
  • 2. Programação Orientada a Objetos Prof. Charles Fortes Charles Fortes
  • 3. Programação Orientada a Objetos Prof. Charles Fortes Charles Fortes Líder Técnico na Empresa Prime Systems. Agilista, apaixonado por desenvolvimento (Web, Desktop, Mobile, o que for), pai, amante do Paintball e do Kenjutsu. MTAC - Microsoft Technical Audience Contributor 100Loop - DotNetRaptors
  • 4. Programação Orientada a Objetos Prof. Charles Fortes Charles Fortes Líder Técnico na Empresa Prime Systems. Agilista, apaixonado por desenvolvimento (Web, Desktop, Mobile, o que for), pai, amante do Paintball e do Kenjutsu. MTAC - Microsoft Technical Audience Contributor 100Loop - DotNetRaptors SlideShare: http://pt.slideshare.net/charleswellingtonfortes Linkedin: http://br.linkedin.com/in/charlesfortes/ Twitter: @CharlesFortes
  • 5. Programação Orientada a Objetos Prof. Charles Fortes Charles Fortes Líder Técnico na Empresa Prime Systems. Agilista, apaixonado por desenvolvimento (Web, Desktop, Mobile, o que for), pai, amante do Paintball e do Kenjutsu. MTAC - Microsoft Technical Audience Contributor 100Loop - DotNetRaptors Desenvolvimento Web – MVC – Angular.JS – JQuery – SQLServer – MySQL – HTML5 – NoSQL
  • 6. Programação Orientada a Objetos Prof. Charles Fortes Calendário
  • 7. Programação Orientada a Objetos Prof. Charles Fortes Calendário – Provas e Reposições Agosto Setembro Outubro Novembro Dezembro Semana 1 2 7 4 2 Semana 2 9 14 11 9 Semana 3 19 16 21 18 16 Semana 4 26 23 28 25 Semana 5 30 Prova 1ºB 30/09/2015 Substitutiva 16/12/2015 Prova Final 02/12/2015
  • 8. Programação Orientada a Objetos Prof. Charles Fortes Calendário - ATPS Agosto Setembro Outubro Novembro Dezembro Semana 1 2 7 4 2 Semana 2 9 14 11 9 Semana 3 19 16 21 18 16 Semana 4 26 23 28 25 Semana 5 30 ATPS 1 16/09/2015 ATPS 3 04/11/2015 ATPS 2 07/10/2015 ATPS 4 25/11/2015
  • 9. Programação Orientada a Objetos Prof. Charles Fortes Abstração Pitágoras
  • 10. Programação Orientada a Objetos Prof. Charles Fortes Abstração Abstração é a habilidade de concentrar nos aspectos essenciais de um contexto qualquer, ignorando características menos importantes ou acidentais Pitágoras Pessoa: Fígado, Estômago, Pulmão, Coração Ou Pessoa: Nome, Endereço, CPF
  • 11. Programação Orientada a Objetos Prof. Charles Fortes Abstração Leva-se em consideração o domínio da aplicação, os interesses e relevâncias para o contexto. Pitágoras
  • 12. Programação Orientada a Objetos Prof. Charles Fortes Classes Pitágoras
  • 13. Programação Orientada a Objetos Prof. Charles Fortes Classes Uma estrutura que abstrai um conjunto de objetos com características similares. Uma classe define o comportamento de seus objetos através de métodos e os estados possíveis destes objetos através de atributos Pitágoras
  • 14. Programação Orientada a Objetos Prof. Charles Fortes Classes Pitágoras A receita de uma pizza
  • 15. Programação Orientada a Objetos Prof. Charles Fortes Classes Pitágoras A planta de uma casa
  • 16. Programação Orientada a Objetos Prof. Charles Fortes Objetos Pitágoras
  • 17. Programação Orientada a Objetos Prof. Charles Fortes Objetos uma referência a um local da memória que possui um valor. Um objeto pode ser uma variável, função, ou estrutura de dados. Com a introdução da programação orientada a objetos, a palavra objeto refere-se a uma instância de uma classe. Em programação orientada a objetos, um objeto passa a existir a partir de um "molde" (classe); a classe define o comportamento do objeto, usando atributos (propriedades) e métodos (ações) Pitágoras
  • 18. Programação Orientada a Objetos Prof. Charles Fortes Objetos Pitágoras A casa construída
  • 19. Programação Orientada a Objetos Prof. Charles Fortes Atributos Pitágoras
  • 20. Programação Orientada a Objetos Prof. Charles Fortes Atributos Os Atributos em Programação Orientada a Objetos são os elementos que definem a estrutura de uma classe. Um atributo é um dado para o qual cada objeto tem seu próprio valor. Pitágoras
  • 21. Programação Orientada a Objetos Prof. Charles Fortes Atributos Pitágoras Capacidade em Quilos Dimensões Cor Modelo Marca
  • 22. Programação Orientada a Objetos Prof. Charles Fortes Comportamentos Pitágoras
  • 23. Programação Orientada a Objetos Prof. Charles Fortes Comportamentos Em linguagens baseadas em classe eles são definidos na classe. Métodos definem o comportamento a ser exibido pelas instâncias da classe associada no tempo de execução do programa. Métodos possuem a propriedade especial que em tempo de execução, possuem acesso aos dados armazenados em uma instância da classe (ou instância de classe ou objeto de classe ou objeto) que estão associados e são, desta forma, capazes de controlar o estado da instância. A associação entre classe e método é chamada de ligação (binding). Um método associado com uma classe é dito estar ligado (bound) à classe. Métodos podem ser ligados a uma classe em tempo de compilação (ligação estática) ou a um objeto em tempo de execução (ligação dinâmica). Pitágoras
  • 24. Programação Orientada a Objetos Prof. Charles Fortes Comportamentos Pitágoras Lavar() Centrifugar() Parar() SoltarÁgua() Enxaguar()
  • 25. Programação Orientada a Objetos Prof. Charles Fortes Encapsulamento Pitágoras
  • 26. Programação Orientada a Objetos Prof. Charles Fortes Encapsulamento Técnica que isola os detalhes de implementação dentro de um objeto, expondo o que é necessário a quem consome ou interage com o objeto. Protegendo e dando mais flexibilidade às mudanças. Pitágoras
  • 27. Programação Orientada a Objetos Prof. Charles Fortes Encapsulamento Pitágoras Com isto podemos por exemplo alterar o comportamento de um método de forma a não gerar impactos em quem consome o método. Correções de bugs e otimizações de código podem ser realizadas em novas versões de uma classe sem impactarmos aqueles que a utilizam, contanto que se mantenha o contrato/assinatura.
  • 28. Programação Orientada a Objetos Prof. Charles Fortes Encapsulamento Pitágoras
  • 29. Programação Orientada a Objetos Prof. Charles Fortes Modificadores de Acesso Pitágoras
  • 30. Programação Orientada a Objetos Prof. Charles Fortes Os modificadores de acesso fornecem os níveis de visibilidade necessários para que busquemos o encapsulamento da informação em nossa classe. Pitágoras Modificadores de Acesso Estes modificadores são caracterizados por palavras chaves que definem se o item será visível a que nível na sua aplicação, podendo ele ser Publico, Privado, Protegido.
  • 31. Programação Orientada a Objetos Prof. Charles Fortes public O modificador public deixará visível a classe ou membro para todas as outras classes, subclasses e pacotes do projeto Java Pitágoras Modificadores de Acesso private O modificador private deixará visível o atributo apenas para a classe em que este atributo se encontra.
  • 32. Programação Orientada a Objetos Prof. Charles Fortes protected O modificador protected deixará visível o atributo para todas as outras classes e subclasses que pertencem ao mesmo pacote Pitágoras Modificadores de Acesso Padrão do java Por padrão, a linguagem Java permite acesso aos membros apenas ao pacote em que ele se encontra
  • 33. Programação Orientada a Objetos Prof. Charles Fortes Pitágoras Modificadores de Acesso Modificador Classe Pacote Subclasse Globalmente Public sim sim sim sim Protected sim sim sim não Sem Modificador (Padrão) sim sim não não Private sim não não não
  • 34. Programação Orientada a Objetos Prof. Charles Fortes Construtores Pitágoras
  • 35. Programação Orientada a Objetos Prof. Charles Fortes São estruturas de código que são executadas na instanciação de um objeto, executam o código necessário para a inicialização da entidade e podem fornecer ou forçar o recebimento de valores iniciais essenciais para a entidade. Pitágoras Construtores
  • 36. Programação Orientada a Objetos Prof. Charles Fortes Pitágoras Construtores
  • 37. Programação Orientada a Objetos Prof. Charles Fortes Por padrão, quando não declarado, é implícito como um construtor que não recebe parâmetros e não possui um comportamento. Uma classe pode possuir diversos construtores e estes podem ainda chamar outro construtor internos, estendendo o comportamento do construtor. Pitágoras Construtores
  • 38. Programação Orientada a Objetos Prof. Charles Fortes Polimorfismo Pitágoras
  • 39. Programação Orientada a Objetos Prof. Charles Fortes Polimorfismo um tipo base pode ter propriedades e operações que passam para muitos de seus casos particulares (derivados), sendo redefinidas de maneiras distintas em cada caso particular. Isso gera diversas propriedades e operações distintas, todas com o mesmo nome e a mesma origem. Pitágoras
  • 40. Programação Orientada a Objetos Prof. Charles Fortes Polimorfismo Pitágoras mamífero Emite sons gatocachorro Emite sons (i.e. late) Emite sons (i.e. mia) CLASSE BASE Método CLASSES DERIVADAS Polimorfismo
  • 41. Programação Orientada a Objetos Prof. Charles Fortes Herança Pitágoras
  • 42. 18/5/2006 Capacitação Técnica Herança • Herança é uma das técnicas de programação mais poderosas e expressivas da programação orientada a objetos. • Quando bem utilizada, a herança possibilita a construção de programas compactos e elegantes. • Entretanto, quando mal utilizada, a herança pode levar à construção de programas irremediavelmente confusos.
  • 43. 18/5/2006 Capacitação Técnica Herança • A herança se fundamenta na idéia de que algumas classes podem ser construídas como casos particulares de outras. • Organizando os conceitos dessa forma no projeto e construção de um programa, podemos construir classes especialmente com o propósito de serem particularizadas.
  • 44. 18/5/2006 Capacitação Técnica Herança • Uma classe que admite casos particulares é uma classe base. • Uma classe que é uma particularização de uma classe base é uma classe derivada daquela classe base. • Em um programa bem construído, todos os conceitos expressos nos tipos de dados e respectivos métodos de uma classe base também fazem parte da classe derivada.
  • 45. 18/5/2006 Capacitação Técnica Herança • Na classe derivada, podemos encontrar particularizações de tipos de dados e métodos da classe base, que respondem pelos mesmos nomes do encontrado na classe base mas têm suas definições reformuladas. • Em um programa bem construído, as particularizações são sempre de fato casos particulares (especializações) do caso base.
  • 46. 18/5/2006 Capacitação Técnica Herança • Por exemplo, poderíamos construir uma classe (tipos de dados e métodos) para capturar os conceitos relevantes relativos a telefones. • Adotando essa classe como base, poderíamos então construir as classes derivadas telefones fixos e telefones móveis. • Os telefones móveis poderiam gerar ainda as classes derivadas telefones móveis pré-pagos e telefones móveis pós-pagos.
  • 47. 18/5/2006 Capacitação Técnica Herança • Construímos dessa forma uma hierarquia de classes. Existem conceitos e operações que só dizem respeito aos telefones móveis pré-pagos, e alguns conceitos e operações relativos a essa categoria de telefones têm detalhes que são inerentes a apenas tais telefones. Os telefones móveis pré-pagos, entretanto, continuam sendo telefones, e portanto a eles se aplicam os conceitos referentes a telefones em geral.
  • 48. 18/5/2006 Capacitação Técnica Herança • Uma classe abstrata é uma classe construída exclusivamente para ser particularizada, ou seja para funcionar como uma “matriz” de conceitos específicos que de fato sejam utilizados diretamente em um programa. Uma classe abstrata, portanto, não admite instâncias – somente suas classes derivadas admitem instâncias.
  • 49. 18/5/2006 Capacitação Técnica Herança • Uma classe final é, em um certo sentido, o contrário de uma classe virtual. Uma classe final não admite classes derivadas, e portanto só pode ser utilizada diretamente. • Exercício: para que serve uma classe final abstrata? • RESPOSTA: para nada. • Se é abstrata, não admite instâncias diretamente. Se é final, não admite derivadas.
  • 50. 18/5/2006 Capacitação Técnica Herança • Polimorfismo: se duas classes derivadas são construídas a partir da mesma classe base, pode ocorrer de um mesmo conceito (por exemplo um nome de método que caracteriza uma determinada operação) tenha diferentes implementações nas diferentes classes. Esse fenômeno é denominado polimorfismo – um mesmo conceito assume diferentes formas, dependendo do seu contexto caracterizado pela classe em que se encontra.
  • 51. Programação Orientada a Objetos Prof. Charles Fortes Sobrecarga/Sobrescrita Pitágoras
  • 52. Programação Orientada a Objetos Prof. Charles Fortes Sobrecarga Adicionar novos comportamentos a um método. Durante a execução a assinatura difere qual dos dois devem ser executados. public int soma(int num1, int num2){ ... } public int soma(float num1, float num2){ ... } Pitágoras
  • 53. Programação Orientada a Objetos Prof. Charles Fortes Sobrescrita Sobrescrever comportamentos herdados de uma classe superior. @Overide public string toString(){ super.toString(); System.out.println(“Aeeeeeeeeeee o/”); } Pitágoras
  • 54. Programação Orientada a Objetos Prof. Charles Fortes Swing - AWT Pitágoras
  • 55. Programação Orientada a Objetos Prof. Charles Fortes Swing - AWT Pitágoras Swing Awt Componentes independentes de plataforma Depende da plataforma Diferentes apresentações (lookAndFeel) Não suportado Conjunto maior de componentes Poucos componentes do SO Apenas 1 “peer” com o SO a janela Um “peer” por componente Desenho 100% com componentes do java Desenho pelo SO Muita coisa pronta e abstraída Reimplementa tudo na mão
  • 56. Programação Orientada a Objetos Prof. Charles Fortes S.O.L.I.D Pitágoras
  • 57. 18/5/2006 Capacitação Técnica Como construir bons métodos • Um método bem projetado tem uma única função. • O código deve ser auto-explicativo. • Variáveis globais devem ser evitadas. • Os parâmetros devem ser auto-explicativos e em pequena quantidade (7 é um bom limite superior).
  • 58. 18/5/2006 Capacitação Técnica Como construir bons métodos • Métodos devem implementar abstrações do problema modelado. • Um bom método deve ser coeso: ter uma e apenas uma função. • Um bom programa deve seguir convenções de construção: • Variáveis devem ter nomes padronizados. • Os parâmetros devem ser organizados de uma forma padrão, p.ex. obedecendo à ordem entrada/alteração/saída/mensagens de erro.
  • 59. 18/5/2006 Capacitação Técnica Como construir bons métodos • Todos os parâmetros de um método devem ser utilizados (ou seja, não devem existir parâmetros desnecessários). • Encapsulamento: variáveis e métodos privados devem ser preferidos com relação aos públicos.
  • 60. Programação Orientada a Objetos Prof. Charles Fortes Dúvidas?