SlideShare uma empresa Scribd logo
PROGRAMAÇÃO ORIENTADA A OBJETOS
(POO)
Objetos, Classes e
Encapsulamento
MINISTÉRIO DA EDUCAÇÃO
SECRETARIA DE EDUCAÇÃO PROFISSIONAL E TECNOLÓGICA
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE
Docente: Diego Armando de Oliveira Meneses Data: 25/04/2017
1Roteiro
1. Introdução
1.1 Contexto histórico
2. Desenvolvimento
3. Conclusão
1.2 Definições
1.3 Por que usar POO?
1.4 Benefícios
Programação Orientada a Objetos (POO)
1.5 Princípios
2.1 Conceitos de Objeto
2.2 Conceitos de Classe e Instância
2.3 Atributos/Campos
2.4 Métodos
2.6 Construtores
2.5 Mensagem entre objetos
2.7 Encapsulamento
3.1 Dúvidas
3.2 Exercício(s) de ficção
3.3 Próximos Conteúdos
3.4 Referências
2
Geral
Específicos
Objetivos Programação Orientada a Objetos (POO)
Introduzir os principais conceitos referentes à programação de computadores utilizando o
paradigma de orientação a objetos.
• Permitir o entendimento do contexto histórico da POO e quais fatores influenciaram no seu surgimento ao longo
dos anos;
• Entender os motivos do uso da POO com o objetivo de evitar os erros durante o processo de desenvolvimento;
• Compreender os benefícios da POO afim de saber em quais as melhores ocasiões para se usar o paradigma;
• Descrever os benefícios de uma abordagem OOP;
• Compreender como objetos do mundo real podem se tornar parte de elementos fundamentais do código;
• Reconhecer objetos e gerar modelos para objetos e entender classes;
• Entender os conceitos básicos de objetos, classes, instância, atributos/campos, métodos, mensagens, construtores
e encapsulamento;
• Compreender a troca de mensagens entre objetos;
• Conhecer a função especial do construtor;
• Entender como alguns conceitos interferem no encapsulamento.
3Programação Orientada a Objetos (POO)
1.1 Contexto histórico
Figura 1 - Evolução e tendências em Engenharia de Sistemas e Software
4Programação Orientada a Objetos (POO)
ALAN KAY
“ o computador ideal deveria funcionar como
um organismo vivo, isto é, cada "célula"
comportar-se-ia relacionando-se com outras a
fim de alcançar um objetivo, contudo,
funcionando de forma autônoma. As células
poderiam também reagrupar-se para resolver
um outro problema ou desempenhar outras
funções.
1.1 Contexto histórico
Postulado “algébrico-biológico”
5Programação Orientada a Objetos (POO)
1.2 Definições
“ POO é uma técnica para modelagem de sistemas
que utiliza objetos e suas interações (JACOBSON, 1993).
“ POO é um paradigma de programação que envolve a criação de
objetos que modelam um problema de negócio que se pretende
resolver (KENDAL, 2009).
6Programação Orientada a Objetos (POO)
1.3 Por que usar POO?
Não é na produção do código que está a maioria dos problemas do
processo de desenvolvimento de software (KENDAL, 2009).
A maioria dos problemas surgem da:
Deficiência na análise e design dos sistemas;
Deficiência na manutenção dos sistemas.
7Programação Orientada a Objetos (POO)
1.3 Por que usar POO?
Figura 2 - Modelo do custo do ciclo de vida (LCC) do sistema.
Fonte: Office of the Secretary of Defense (1992).
8Programação Orientada a Objetos (POO)
1.4 Benefícios
Melhores
Abstrações
Melhor
Manutenibilidade
Melhor
Reusabilidade
Fonte: Kendal (2009).
9Programação Orientada a Objetos (POO)
1.5 Princípios
Polimorfismo
Objetos e
Classes
Abstração Encapsulamento
Herança
Generalização/Especialização
Fonte: Kendal (2009).
Objetos e Classes são os
dois conceitos que estão
no "coração" da POO
(BARNES e KOLLING, 2012).
10Programação Orientada a Objetos (POO)
2.1 Conceitos de Objeto
Figura 3 - Objetos da realidade diretamente
mapeados em objetos no modelo.
Fonte: Jacobson (1993).
11Programação Orientada a Objetos (POO)
2.1 Conceitos de Objeto
O Objeto é um entidade com
capacidade de salvar seu estado e
que oferece um número de
operações que examinam ou
alteram esse estado (JACOBSON, 1993).
Figura 4 - Tom, Mary e John são considerados objetos.
Figura 5 - O Modelo de objeto TOM e suas operações.
Fonte: Jacobson (1993).
Os objetos podem ser categorizados
como todos os objetos de um tipo
particular (BARNES e KOLLING, 2012).
12Programação Orientada a Objetos (POO)
2.2 Conceitos de Classe e Instância
Uma classe representa um
modelo para vários objetos e
descreve como esses objetos
são estruturados internamente.
Objetos da mesma classe têm a
mesma definição tanto para
suas operações quanto para
sua estrutura de informações
(JACOBSON, 1993).
Figura 6 - A classe Person descreve o que é comum em
todas as pessoas.
Fonte: Jacobson (1993).
13Programação Orientada a Objetos (POO)
2.2 Conceitos de Classe e Instância
Figura 7 -Tom, Mary e John são todas instâncias da Classe Person.
Fonte: Jacobson (1993).
Uma instância é um objeto
criado a partir de uma classe. A
classe descreve a estrutura
(comportamento e informação)
da instância, enquanto o estado
atual da instância é definido
pelas operações executadas na
instância (JACOBSON, 1993).
14Programação Orientada a Objetos (POO)
2.2 Conceitos de Classe e Instância
Figura 9 - Classes como tipo de atributo de outra classe.
Fonte: Jacobson (1993).
Figura 8 - Instâncias de classes diferentes.
Fonte: Jacobson (1993).
15Programação Orientada a Objetos (POO)
Figura 10 - Abstração do mundo real para o
modelo de software.
Fonte: Kendal (2009).
2.2 Conceitos de Classe e Instância
public class Person
{
private String name;
private int age;
private float weight; //peso
private float height; //Altura
public Person(String name,int age,float weight,float heigh
{
name = name;
age = age;
weight = weight;
height = height;
}
public int getAge()
{
return age;
}
public void jump(){//Implementação}
public void walk(){//Implementação}
private float getIMC()
{
return (weight/ (height * weight));
}
}
16Programação Orientada a Objetos (POO)
2.3 Atributos/Campos
Atributos ou campos armazenam
os dados (estado) dentro de um
objeto. Também podem ser
conhecidos como variáveis de
instância (BARNES e KOLLING, 2012).
Atributos ou campos são variáveis
definidas em uma classe para
encapsular dados para cada
Instância da classe são conhecidos
como atributos ou campos (HILLAR,
2015).
public class Person
{
private String name;
private int age;
private float weight; //peso
private float height; //Altura
public Person(String name,int age,float weight,float heigh
{
name = name;
age = age;
weight = weight;
height = height;
}
public int getAge()
{
return age;
}
public void jump(){//Implementação}
public void walk(){//Implementação}
private float getIMC()
{
return (weight/ (height * weight));
}
}
17Programação Orientada a Objetos (POO)
2.3 Atributos/Campos
Cada instância tem seu próprio
valor independente para os
atributos ou campos definidos na
classe (HILLAR, 2015).
18Programação Orientada a Objetos (POO)
2.4 Métodos
Os métodos implementam o
comportamento de um objeto;
Eles fornecem sua funcionalidade
(BARNES e KOLLING, 2012).
As funções ou sub-rotinas
definidas em uma classe para
encapsular o comportamento de
cada instância da classe são
conhecidas como métodos (HILLAR,
2015).
public class Person
{
private String name;
private int age;
private float weight; //peso
private float height; //Altura
public Person(String name,int age,float weight,float height
{
name = name;
age = age;
weight = weight;
height = height;
}
public int getAge()
{
return age;
}
public void jump(){//Implementação}
public void walk(){//Implementação}
private float getIMC()
{
return (weight/ (height * weight));
}
}
19Programação Orientada a Objetos (POO)
2.4 Métodos
Cada instância pode acessar o conjunto
de métodos expostos pela classe. O
código especificado em um método é
capaz de trabalhar com os atributos
especificados na classe. Quando
executamos um método, ele usará os
atributos da instância específica. Uma
boa prática é definir os métodos em um
lugar lógico, isto é, no local onde os dados
necessários são mantidos (HILLAR, 2015).
public class Person
{
private String name;
private int age;
private float weight; //peso
private float height; //Altura
public Person(String name,int age,float weight,float heigh
{
name = name;
age = age;
weight = weight;
height = height;
}
public int getAge()
{
return age;
}
public void jump(){//Implementação}
public void walk(){//Implementação}
private float getIMC()
{
return (weight/ (height * weight));
}
}
20Programação Orientada a Objetos (POO)
2.5 Mensagem entre Objetos
Figura 11 - Interações de objeto nos termos da POO.
Fonte: Poo, Kiong e Ashok (2009).
Objetos se comunicam uns com
os outros através do envio de
mensagens. A mensagem é uma
chamada de método de um
objeto de envio de mensagem
para um objeto de recepção de
mensagem. Um objeto de envio
de mensagem é uma mensagem-
remetente enquanto um objeto
receptor é um receptor (POO, KIONG
e ASHOK, 2008).
21Programação Orientada a Objetos (POO)
2.5 Mensagem entre Objetos
A mensagem é composta por três
componentes (POO, KIONG e ASHOK,
2008). São eles:
Identificador de objetos;
Um nome de método;
Argumentos.
22Programação Orientada a Objetos (POO)
2.6 Construtores
Construtores têm um papel especial a
cumprir. Eles são responsáveis por
garantir que um objeto está
configurado corretamente quando é
criada pela primeira vez (BARNES e
KOLLING, 2012).
public class Person
{
private String name;
private int age;
private float weight; //peso
private float height; //Altura
public Person(String name,int age,float weight,float heigh
{
name = name;
age = age;
weight = weight;
height = height;
}
public Person()
{
name = "Padrão";
age = 0;
weight = 0;
height = 0;
}
public int getAge()
{
return age;
}
}
23Programação Orientada a Objetos (POO)
2.7 Encapsulamento
Permite focar no que o
objeto faz sem considerar
as complexidades de como
isso funciona, ou seja,
pode abstrair como os
atributos são preenchidos
ou recuperados e como as
rotinas funcionam
rotinas (KENDAL, 2009).
Significa reunir um conjunto de atributos e
métodos em uma definição de objeto e ocultar
sua estrutura de implementação dos usuários do
objeto. (POO, KIONG, ASHOK, 2008).
24Programação Orientada a Objetos (POO)
2.7 Encapsulamento
Formas de implementar
o encapsulamento:
Getters e Setters;
Modificadores de Acesso (Public, Private,
Protected);
Construtores.
public class Person
{
private String name;
private int age;
private float weight; //peso
private float height; //Altura
public Person(String name,int age,float weight,float heigh
{
name = name;
age = age;
weight = weight;
height = height;
}
public Person()
{
name = "Padrão";
age = 0;
weight = 0;
height = 0;
}
public int getAge(){return age;}
public void setAge(int age){age = age;}
}
25Programação Orientada a Objetos (POO)
3.1 Dúvidas
26Programação Orientada a Objetos (POO)
3.2 Exercício(s) de ficção
1- Quais são os princípios da Programação Orientada a Objetos (POO)?
3- Considerando o ambiente a sua volta, escolha um objeto do mundo real e indique 2
estados e 2 comportamentos básicos desse objeto. Se possível, escreva a classe que
representa este objeto em código JAVA.
2- Levando em consideração um objeto comum tipo um smartphone, que é utilizado
quase que constantemente, descreva suas funcionalidades mais básicas. Agora
considere e reflita como é difícil descrever os componentes internos do aparelho que
realizam essa funcionalidade. Com isso, responda qual princípio da POO está
envolvido nesse questionamento.
26.1Programação Orientada a Objetos (POO)
3.2 Exercício(s) Complementar
public class Person
{
public String name;
public int age;
public float weight; //peso
public float height; //Altura
public Person()
{
}
public int getAge(){return age;}
}
4 - Usando os aprendizados
obtidos nesta aula, altere o código
ao lado para que ele reflita um
código encapsulado.
27Programação Orientada a Objetos (POO)
3.3 Próximos Conteúdos
1. Polimorfismo;
2. Herança.
Links e referências para despertar o interesse em polimorfismo e herança:
Ajendra, J. Java with Pokemons – Object Oriented Programming, 2016.
https://pt.slideshare.net/danielgi2/polimorfismo-em-jogos
Blog da matéria (Apresentações, referências e outros materiais):
http://poo-ifs-20171.blogspot.com.br/
28Programação Orientada a Objetos (POO)
3.4 Referências
Principal (Acervo IFS)
Complementares
BARNES, David J.; KOLLING, Michael. Programação orientada a objetos com Java: uma introdução
prática usando o Bluej. 4. ed. São Paulo: Pearson Prentice Hall, 2012. 455 p. ISBN 9788576051879.
JACOBSON, Ivar. Object-oriented software engineering: a use case driven approach. 1. ed.
Greenwich: ACM Press, 1993. 527 p. ISBN 0201544350.
Text
DEITEL, H. M.; DEITEL, P. J. Java: Como Programar. 6. Ed. São Paulo: Pearson Education, 2005.
HILLAR, G. C. Learning Object-Oriented Programming. Packt Publishing, 2015.
POO, D. C. C., KIONG, D. B. K., ASHOK, S. Object-oriented programming and Java. 2. Ed. Springer, 2008.
KENDAL, S. Object oriented programming using Java. Ventus Publishing ApS, 2009.
Office of the Secretary of Defense, Cost Analysis Improvement Group. (1992). Operating and support cost-
estimating guide. Retrieved from http://www.dtic.mil/pae/paeosg02.html
BOEHM, B. A View of 20th and 21st Century Software Engineering. Proceedings of the 28th International Conference
on Software Engineering SE - ICSE ’06, p. 12–29, 2006.

Mais conteúdo relacionado

Mais procurados

Curso : Introdução Orientação a Objetos
Curso : Introdução Orientação a ObjetosCurso : Introdução Orientação a Objetos
Curso : Introdução Orientação a Objetosdanielrpgj30
 
Programação Orientado a Objetos
Programação Orientado a ObjetosProgramação Orientado a Objetos
Programação Orientado a Objetos
Jéssica Nathany Carvalho Freitas
 
Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)
Daniel Brandão
 
Aula 09 - introducao oo
Aula 09 - introducao ooAula 09 - introducao oo
Aula 09 - introducao oo
Moacir Jóse Ferreira Junior Ferreira
 
Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVA
Moises Omena
 
O paradigma da orientação a objetos
O paradigma da orientação a objetosO paradigma da orientação a objetos
O paradigma da orientação a objetosNécio de Lima Veras
 
Introdução a poo
Introdução a pooIntrodução a poo
Introdução a poo
Sedu
 
JAVA - Orientação a Objetos
JAVA - Orientação a ObjetosJAVA - Orientação a Objetos
JAVA - Orientação a Objetos
Elaine Cecília Gatto
 
Python
PythonPython
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a Objetos
Igor Takenami
 
Analise de Requisitos
Analise de RequisitosAnalise de Requisitos
Analise de Requisitoselliando dias
 
3 - Modelo Entidade Relacionamento
3 - Modelo Entidade Relacionamento3 - Modelo Entidade Relacionamento
3 - Modelo Entidade Relacionamento
Cris Fidelix
 
Desenvolvimento Mobile
Desenvolvimento MobileDesenvolvimento Mobile
Desenvolvimento Mobile
Elton Minetto
 
Engenharia de Requisitos
Engenharia de RequisitosEngenharia de Requisitos
Engenharia de Requisitos
Cloves da Rocha
 
Padrões de Projeto
Padrões de ProjetoPadrões de Projeto
Padrões de Projeto
Vagner Santana
 
UML
UMLUML
Java: Encapsulamento e modificadores de acesso
Java: Encapsulamento e modificadores de acessoJava: Encapsulamento e modificadores de acesso
Java: Encapsulamento e modificadores de acesso
Arthur Emanuel
 
Java: Introdução à Orientação a Objetos
Java: Introdução à Orientação a ObjetosJava: Introdução à Orientação a Objetos
Java: Introdução à Orientação a Objetos
Arthur Emanuel
 

Mais procurados (20)

Curso : Introdução Orientação a Objetos
Curso : Introdução Orientação a ObjetosCurso : Introdução Orientação a Objetos
Curso : Introdução Orientação a Objetos
 
Diagrama de Classes
Diagrama de ClassesDiagrama de Classes
Diagrama de Classes
 
Programação Orientado a Objetos
Programação Orientado a ObjetosProgramação Orientado a Objetos
Programação Orientado a Objetos
 
Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)
 
Aula 09 - introducao oo
Aula 09 - introducao ooAula 09 - introducao oo
Aula 09 - introducao oo
 
Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVA
 
POO - 10 - Herança
POO - 10 - HerançaPOO - 10 - Herança
POO - 10 - Herança
 
O paradigma da orientação a objetos
O paradigma da orientação a objetosO paradigma da orientação a objetos
O paradigma da orientação a objetos
 
Introdução a poo
Introdução a pooIntrodução a poo
Introdução a poo
 
JAVA - Orientação a Objetos
JAVA - Orientação a ObjetosJAVA - Orientação a Objetos
JAVA - Orientação a Objetos
 
Python
PythonPython
Python
 
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a Objetos
 
Analise de Requisitos
Analise de RequisitosAnalise de Requisitos
Analise de Requisitos
 
3 - Modelo Entidade Relacionamento
3 - Modelo Entidade Relacionamento3 - Modelo Entidade Relacionamento
3 - Modelo Entidade Relacionamento
 
Desenvolvimento Mobile
Desenvolvimento MobileDesenvolvimento Mobile
Desenvolvimento Mobile
 
Engenharia de Requisitos
Engenharia de RequisitosEngenharia de Requisitos
Engenharia de Requisitos
 
Padrões de Projeto
Padrões de ProjetoPadrões de Projeto
Padrões de Projeto
 
UML
UMLUML
UML
 
Java: Encapsulamento e modificadores de acesso
Java: Encapsulamento e modificadores de acessoJava: Encapsulamento e modificadores de acesso
Java: Encapsulamento e modificadores de acesso
 
Java: Introdução à Orientação a Objetos
Java: Introdução à Orientação a ObjetosJava: Introdução à Orientação a Objetos
Java: Introdução à Orientação a Objetos
 

Semelhante a POO - Aula 1

Aula 01 introdução aoo
Aula 01   introdução aooAula 01   introdução aoo
Aula 01 introdução aoo
Maria Alice Jovinski
 
Aula 4 -_metodologia_e_tecnicas_de_analise_oo
Aula 4 -_metodologia_e_tecnicas_de_analise_ooAula 4 -_metodologia_e_tecnicas_de_analise_oo
Aula 4 -_metodologia_e_tecnicas_de_analise_ooPortal_do_estudante_ADS
 
3.1 orientação objetos
3.1  orientação objetos3.1  orientação objetos
3.1 orientação objetos
Frank Coelho
 
Introdução à programação por objectos final
Introdução à programação por objectos finalIntrodução à programação por objectos final
Introdução à programação por objectos finalemcp11
 
Cp25540549
Cp25540549Cp25540549
Cp25540549
IJERA Editor
 
Banco de Dados Orientado a Objeto
Banco de Dados Orientado a ObjetoBanco de Dados Orientado a Objeto
Banco de Dados Orientado a Objetoelliando dias
 
01 introducao-a-programacao-orientada-a-objetos-programacao-orientada-a-objet...
01 introducao-a-programacao-orientada-a-objetos-programacao-orientada-a-objet...01 introducao-a-programacao-orientada-a-objetos-programacao-orientada-a-objet...
01 introducao-a-programacao-orientada-a-objetos-programacao-orientada-a-objet...
odnanfer
 
Python Orientação a Objeto
Python Orientação a ObjetoPython Orientação a Objeto
Python Orientação a Objeto
antonio sérgio nogueira
 
01 Orientacao A Objetos Programacao
01   Orientacao A Objetos   Programacao01   Orientacao A Objetos   Programacao
01 Orientacao A Objetos Programacaotaniamaciel
 
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
César Augusto Pessôa
 
Sobre a Criação de Unidades de Aprendizagem do Padrão IMS Learning Design - u...
Sobre a Criação de Unidades de Aprendizagem do Padrão IMS Learning Design - u...Sobre a Criação de Unidades de Aprendizagem do Padrão IMS Learning Design - u...
Sobre a Criação de Unidades de Aprendizagem do Padrão IMS Learning Design - u...
Luiz Matos
 
Sobre a Criação de Unidades de Aprendizagem do Padrão IMS Learning Design - u...
Sobre a Criação de Unidades de Aprendizagem do Padrão IMS Learning Design - u...Sobre a Criação de Unidades de Aprendizagem do Padrão IMS Learning Design - u...
Sobre a Criação de Unidades de Aprendizagem do Padrão IMS Learning Design - u...
Luiz Matos
 
Apresentação programação orientada à objetos
Apresentação   programação orientada à objetosApresentação   programação orientada à objetos
Apresentação programação orientada à objetossoncino
 
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
 
Conceitos Básicos de OO e Java
Conceitos Básicos de OO e JavaConceitos Básicos de OO e Java
Conceitos Básicos de OO e JavaCharles Jungbeck
 

Semelhante a POO - Aula 1 (20)

Aula01-IntroducaoOO.pptx
Aula01-IntroducaoOO.pptxAula01-IntroducaoOO.pptx
Aula01-IntroducaoOO.pptx
 
Aula 01 introdução aoo
Aula 01   introdução aooAula 01   introdução aoo
Aula 01 introdução aoo
 
Aula 4 -_metodologia_e_tecnicas_de_analise_oo
Aula 4 -_metodologia_e_tecnicas_de_analise_ooAula 4 -_metodologia_e_tecnicas_de_analise_oo
Aula 4 -_metodologia_e_tecnicas_de_analise_oo
 
3.1 orientação objetos
3.1  orientação objetos3.1  orientação objetos
3.1 orientação objetos
 
Aula 3 -_fundamentos_sobre_aoo
Aula 3 -_fundamentos_sobre_aooAula 3 -_fundamentos_sobre_aoo
Aula 3 -_fundamentos_sobre_aoo
 
Introdução à programação por objectos final
Introdução à programação por objectos finalIntrodução à programação por objectos final
Introdução à programação por objectos final
 
Java7
Java7Java7
Java7
 
Java 00 Poo
Java 00 PooJava 00 Poo
Java 00 Poo
 
Cp25540549
Cp25540549Cp25540549
Cp25540549
 
Banco de Dados Orientado a Objeto
Banco de Dados Orientado a ObjetoBanco de Dados Orientado a Objeto
Banco de Dados Orientado a Objeto
 
01 introducao-a-programacao-orientada-a-objetos-programacao-orientada-a-objet...
01 introducao-a-programacao-orientada-a-objetos-programacao-orientada-a-objet...01 introducao-a-programacao-orientada-a-objetos-programacao-orientada-a-objet...
01 introducao-a-programacao-orientada-a-objetos-programacao-orientada-a-objet...
 
Python Orientação a Objeto
Python Orientação a ObjetoPython Orientação a Objeto
Python Orientação a Objeto
 
01 Orientacao A Objetos Programacao
01   Orientacao A Objetos   Programacao01   Orientacao A Objetos   Programacao
01 Orientacao A Objetos Programacao
 
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
 
Sobre a Criação de Unidades de Aprendizagem do Padrão IMS Learning Design - u...
Sobre a Criação de Unidades de Aprendizagem do Padrão IMS Learning Design - u...Sobre a Criação de Unidades de Aprendizagem do Padrão IMS Learning Design - u...
Sobre a Criação de Unidades de Aprendizagem do Padrão IMS Learning Design - u...
 
Sobre a Criação de Unidades de Aprendizagem do Padrão IMS Learning Design - u...
Sobre a Criação de Unidades de Aprendizagem do Padrão IMS Learning Design - u...Sobre a Criação de Unidades de Aprendizagem do Padrão IMS Learning Design - u...
Sobre a Criação de Unidades de Aprendizagem do Padrão IMS Learning Design - u...
 
Apresentação programação orientada à objetos
Apresentação   programação orientada à objetosApresentação   programação orientada à objetos
Apresentação programação orientada à objetos
 
Aula 5 -_fundamentos_de_uml
Aula 5 -_fundamentos_de_umlAula 5 -_fundamentos_de_uml
Aula 5 -_fundamentos_de_uml
 
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
 
Conceitos Básicos de OO e Java
Conceitos Básicos de OO e JavaConceitos Básicos de OO e Java
Conceitos Básicos de OO e Java
 

POO - Aula 1

  • 1. PROGRAMAÇÃO ORIENTADA A OBJETOS (POO) Objetos, Classes e Encapsulamento MINISTÉRIO DA EDUCAÇÃO SECRETARIA DE EDUCAÇÃO PROFISSIONAL E TECNOLÓGICA INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE Docente: Diego Armando de Oliveira Meneses Data: 25/04/2017
  • 2. 1Roteiro 1. Introdução 1.1 Contexto histórico 2. Desenvolvimento 3. Conclusão 1.2 Definições 1.3 Por que usar POO? 1.4 Benefícios Programação Orientada a Objetos (POO) 1.5 Princípios 2.1 Conceitos de Objeto 2.2 Conceitos de Classe e Instância 2.3 Atributos/Campos 2.4 Métodos 2.6 Construtores 2.5 Mensagem entre objetos 2.7 Encapsulamento 3.1 Dúvidas 3.2 Exercício(s) de ficção 3.3 Próximos Conteúdos 3.4 Referências
  • 3. 2 Geral Específicos Objetivos Programação Orientada a Objetos (POO) Introduzir os principais conceitos referentes à programação de computadores utilizando o paradigma de orientação a objetos. • Permitir o entendimento do contexto histórico da POO e quais fatores influenciaram no seu surgimento ao longo dos anos; • Entender os motivos do uso da POO com o objetivo de evitar os erros durante o processo de desenvolvimento; • Compreender os benefícios da POO afim de saber em quais as melhores ocasiões para se usar o paradigma; • Descrever os benefícios de uma abordagem OOP; • Compreender como objetos do mundo real podem se tornar parte de elementos fundamentais do código; • Reconhecer objetos e gerar modelos para objetos e entender classes; • Entender os conceitos básicos de objetos, classes, instância, atributos/campos, métodos, mensagens, construtores e encapsulamento; • Compreender a troca de mensagens entre objetos; • Conhecer a função especial do construtor; • Entender como alguns conceitos interferem no encapsulamento.
  • 4. 3Programação Orientada a Objetos (POO) 1.1 Contexto histórico Figura 1 - Evolução e tendências em Engenharia de Sistemas e Software
  • 5. 4Programação Orientada a Objetos (POO) ALAN KAY “ o computador ideal deveria funcionar como um organismo vivo, isto é, cada "célula" comportar-se-ia relacionando-se com outras a fim de alcançar um objetivo, contudo, funcionando de forma autônoma. As células poderiam também reagrupar-se para resolver um outro problema ou desempenhar outras funções. 1.1 Contexto histórico Postulado “algébrico-biológico”
  • 6. 5Programação Orientada a Objetos (POO) 1.2 Definições “ POO é uma técnica para modelagem de sistemas que utiliza objetos e suas interações (JACOBSON, 1993). “ POO é um paradigma de programação que envolve a criação de objetos que modelam um problema de negócio que se pretende resolver (KENDAL, 2009).
  • 7. 6Programação Orientada a Objetos (POO) 1.3 Por que usar POO? Não é na produção do código que está a maioria dos problemas do processo de desenvolvimento de software (KENDAL, 2009). A maioria dos problemas surgem da: Deficiência na análise e design dos sistemas; Deficiência na manutenção dos sistemas.
  • 8. 7Programação Orientada a Objetos (POO) 1.3 Por que usar POO? Figura 2 - Modelo do custo do ciclo de vida (LCC) do sistema. Fonte: Office of the Secretary of Defense (1992).
  • 9. 8Programação Orientada a Objetos (POO) 1.4 Benefícios Melhores Abstrações Melhor Manutenibilidade Melhor Reusabilidade Fonte: Kendal (2009).
  • 10. 9Programação Orientada a Objetos (POO) 1.5 Princípios Polimorfismo Objetos e Classes Abstração Encapsulamento Herança Generalização/Especialização Fonte: Kendal (2009). Objetos e Classes são os dois conceitos que estão no "coração" da POO (BARNES e KOLLING, 2012).
  • 11. 10Programação Orientada a Objetos (POO) 2.1 Conceitos de Objeto Figura 3 - Objetos da realidade diretamente mapeados em objetos no modelo. Fonte: Jacobson (1993).
  • 12. 11Programação Orientada a Objetos (POO) 2.1 Conceitos de Objeto O Objeto é um entidade com capacidade de salvar seu estado e que oferece um número de operações que examinam ou alteram esse estado (JACOBSON, 1993). Figura 4 - Tom, Mary e John são considerados objetos. Figura 5 - O Modelo de objeto TOM e suas operações. Fonte: Jacobson (1993). Os objetos podem ser categorizados como todos os objetos de um tipo particular (BARNES e KOLLING, 2012).
  • 13. 12Programação Orientada a Objetos (POO) 2.2 Conceitos de Classe e Instância Uma classe representa um modelo para vários objetos e descreve como esses objetos são estruturados internamente. Objetos da mesma classe têm a mesma definição tanto para suas operações quanto para sua estrutura de informações (JACOBSON, 1993). Figura 6 - A classe Person descreve o que é comum em todas as pessoas. Fonte: Jacobson (1993).
  • 14. 13Programação Orientada a Objetos (POO) 2.2 Conceitos de Classe e Instância Figura 7 -Tom, Mary e John são todas instâncias da Classe Person. Fonte: Jacobson (1993). Uma instância é um objeto criado a partir de uma classe. A classe descreve a estrutura (comportamento e informação) da instância, enquanto o estado atual da instância é definido pelas operações executadas na instância (JACOBSON, 1993).
  • 15. 14Programação Orientada a Objetos (POO) 2.2 Conceitos de Classe e Instância Figura 9 - Classes como tipo de atributo de outra classe. Fonte: Jacobson (1993). Figura 8 - Instâncias de classes diferentes. Fonte: Jacobson (1993).
  • 16. 15Programação Orientada a Objetos (POO) Figura 10 - Abstração do mundo real para o modelo de software. Fonte: Kendal (2009). 2.2 Conceitos de Classe e Instância public class Person { private String name; private int age; private float weight; //peso private float height; //Altura public Person(String name,int age,float weight,float heigh { name = name; age = age; weight = weight; height = height; } public int getAge() { return age; } public void jump(){//Implementação} public void walk(){//Implementação} private float getIMC() { return (weight/ (height * weight)); } }
  • 17. 16Programação Orientada a Objetos (POO) 2.3 Atributos/Campos Atributos ou campos armazenam os dados (estado) dentro de um objeto. Também podem ser conhecidos como variáveis de instância (BARNES e KOLLING, 2012). Atributos ou campos são variáveis definidas em uma classe para encapsular dados para cada Instância da classe são conhecidos como atributos ou campos (HILLAR, 2015). public class Person { private String name; private int age; private float weight; //peso private float height; //Altura public Person(String name,int age,float weight,float heigh { name = name; age = age; weight = weight; height = height; } public int getAge() { return age; } public void jump(){//Implementação} public void walk(){//Implementação} private float getIMC() { return (weight/ (height * weight)); } }
  • 18. 17Programação Orientada a Objetos (POO) 2.3 Atributos/Campos Cada instância tem seu próprio valor independente para os atributos ou campos definidos na classe (HILLAR, 2015).
  • 19. 18Programação Orientada a Objetos (POO) 2.4 Métodos Os métodos implementam o comportamento de um objeto; Eles fornecem sua funcionalidade (BARNES e KOLLING, 2012). As funções ou sub-rotinas definidas em uma classe para encapsular o comportamento de cada instância da classe são conhecidas como métodos (HILLAR, 2015). public class Person { private String name; private int age; private float weight; //peso private float height; //Altura public Person(String name,int age,float weight,float height { name = name; age = age; weight = weight; height = height; } public int getAge() { return age; } public void jump(){//Implementação} public void walk(){//Implementação} private float getIMC() { return (weight/ (height * weight)); } }
  • 20. 19Programação Orientada a Objetos (POO) 2.4 Métodos Cada instância pode acessar o conjunto de métodos expostos pela classe. O código especificado em um método é capaz de trabalhar com os atributos especificados na classe. Quando executamos um método, ele usará os atributos da instância específica. Uma boa prática é definir os métodos em um lugar lógico, isto é, no local onde os dados necessários são mantidos (HILLAR, 2015). public class Person { private String name; private int age; private float weight; //peso private float height; //Altura public Person(String name,int age,float weight,float heigh { name = name; age = age; weight = weight; height = height; } public int getAge() { return age; } public void jump(){//Implementação} public void walk(){//Implementação} private float getIMC() { return (weight/ (height * weight)); } }
  • 21. 20Programação Orientada a Objetos (POO) 2.5 Mensagem entre Objetos Figura 11 - Interações de objeto nos termos da POO. Fonte: Poo, Kiong e Ashok (2009). Objetos se comunicam uns com os outros através do envio de mensagens. A mensagem é uma chamada de método de um objeto de envio de mensagem para um objeto de recepção de mensagem. Um objeto de envio de mensagem é uma mensagem- remetente enquanto um objeto receptor é um receptor (POO, KIONG e ASHOK, 2008).
  • 22. 21Programação Orientada a Objetos (POO) 2.5 Mensagem entre Objetos A mensagem é composta por três componentes (POO, KIONG e ASHOK, 2008). São eles: Identificador de objetos; Um nome de método; Argumentos.
  • 23. 22Programação Orientada a Objetos (POO) 2.6 Construtores Construtores têm um papel especial a cumprir. Eles são responsáveis por garantir que um objeto está configurado corretamente quando é criada pela primeira vez (BARNES e KOLLING, 2012). public class Person { private String name; private int age; private float weight; //peso private float height; //Altura public Person(String name,int age,float weight,float heigh { name = name; age = age; weight = weight; height = height; } public Person() { name = "Padrão"; age = 0; weight = 0; height = 0; } public int getAge() { return age; } }
  • 24. 23Programação Orientada a Objetos (POO) 2.7 Encapsulamento Permite focar no que o objeto faz sem considerar as complexidades de como isso funciona, ou seja, pode abstrair como os atributos são preenchidos ou recuperados e como as rotinas funcionam rotinas (KENDAL, 2009). Significa reunir um conjunto de atributos e métodos em uma definição de objeto e ocultar sua estrutura de implementação dos usuários do objeto. (POO, KIONG, ASHOK, 2008).
  • 25. 24Programação Orientada a Objetos (POO) 2.7 Encapsulamento Formas de implementar o encapsulamento: Getters e Setters; Modificadores de Acesso (Public, Private, Protected); Construtores. public class Person { private String name; private int age; private float weight; //peso private float height; //Altura public Person(String name,int age,float weight,float heigh { name = name; age = age; weight = weight; height = height; } public Person() { name = "Padrão"; age = 0; weight = 0; height = 0; } public int getAge(){return age;} public void setAge(int age){age = age;} }
  • 26. 25Programação Orientada a Objetos (POO) 3.1 Dúvidas
  • 27. 26Programação Orientada a Objetos (POO) 3.2 Exercício(s) de ficção 1- Quais são os princípios da Programação Orientada a Objetos (POO)? 3- Considerando o ambiente a sua volta, escolha um objeto do mundo real e indique 2 estados e 2 comportamentos básicos desse objeto. Se possível, escreva a classe que representa este objeto em código JAVA. 2- Levando em consideração um objeto comum tipo um smartphone, que é utilizado quase que constantemente, descreva suas funcionalidades mais básicas. Agora considere e reflita como é difícil descrever os componentes internos do aparelho que realizam essa funcionalidade. Com isso, responda qual princípio da POO está envolvido nesse questionamento.
  • 28. 26.1Programação Orientada a Objetos (POO) 3.2 Exercício(s) Complementar public class Person { public String name; public int age; public float weight; //peso public float height; //Altura public Person() { } public int getAge(){return age;} } 4 - Usando os aprendizados obtidos nesta aula, altere o código ao lado para que ele reflita um código encapsulado.
  • 29. 27Programação Orientada a Objetos (POO) 3.3 Próximos Conteúdos 1. Polimorfismo; 2. Herança. Links e referências para despertar o interesse em polimorfismo e herança: Ajendra, J. Java with Pokemons – Object Oriented Programming, 2016. https://pt.slideshare.net/danielgi2/polimorfismo-em-jogos Blog da matéria (Apresentações, referências e outros materiais): http://poo-ifs-20171.blogspot.com.br/
  • 30. 28Programação Orientada a Objetos (POO) 3.4 Referências Principal (Acervo IFS) Complementares BARNES, David J.; KOLLING, Michael. Programação orientada a objetos com Java: uma introdução prática usando o Bluej. 4. ed. São Paulo: Pearson Prentice Hall, 2012. 455 p. ISBN 9788576051879. JACOBSON, Ivar. Object-oriented software engineering: a use case driven approach. 1. ed. Greenwich: ACM Press, 1993. 527 p. ISBN 0201544350. Text DEITEL, H. M.; DEITEL, P. J. Java: Como Programar. 6. Ed. São Paulo: Pearson Education, 2005. HILLAR, G. C. Learning Object-Oriented Programming. Packt Publishing, 2015. POO, D. C. C., KIONG, D. B. K., ASHOK, S. Object-oriented programming and Java. 2. Ed. Springer, 2008. KENDAL, S. Object oriented programming using Java. Ventus Publishing ApS, 2009. Office of the Secretary of Defense, Cost Analysis Improvement Group. (1992). Operating and support cost- estimating guide. Retrieved from http://www.dtic.mil/pae/paeosg02.html BOEHM, B. A View of 20th and 21st Century Software Engineering. Proceedings of the 28th International Conference on Software Engineering SE - ICSE ’06, p. 12–29, 2006.