O documento discute os conceitos fundamentais da programação orientada a objetos (POO), incluindo objetos, classes, encapsulamento, atributos, métodos e mensagens entre objetos. Ele define POO, explica seus benefícios e princípios, e descreve os conceitos-chave e como eles se relacionam para modelar o mundo real como objetos de software.
UML, Linguagem de Modelagem Unificada, é um padrão para modelagem visual de software.
Neste tutorial abordamos como utilizar a UML para fazer especificação de software através de conjunto de modelos e diagramas.
A modelagem visual facilita o entendimento e a comunicação do 'o quê' precisa ser feito e 'como' deverá ser feito o software;
UML, Linguagem de Modelagem Unificada, é um padrão para modelagem visual de software.
Neste tutorial abordamos como utilizar a UML para fazer especificação de software através de conjunto de modelos e diagramas.
A modelagem visual facilita o entendimento e a comunicação do 'o quê' precisa ser feito e 'como' deverá ser feito o software;
IJERA (International journal of Engineering Research and Applications) is International online, ... peer reviewed journal. For more detail or submit your article, please visit www.ijera.com
Ao final da aula, os alunos saberão identificar as principais diferenças entre a programação estruturada e a programação orientada a objetos.
Apresentar aos alunos uma introdução a linguagem C# e a IDE Visual Studio.
Sobre a Criação de Unidades de Aprendizagem do Padrão IMS Learning Design - u...Luiz Matos
Mostra a relação do uso de padrões e a Internet na educação. Aborda o padrão IMS Learning Design e a criação de Unidades de Aprendizagem. É demonstrado um exemplo prático.
Sobre a Criação de Unidades de Aprendizagem do Padrão IMS Learning Design - u...Luiz Matos
Mostra a relação do uso de padrões e a Internet na educação. Aborda o padrão IMS Learning Design e a criação de Unidades de Aprendizagem. É demonstrado um exemplo prático.
Módulo 9 - Introdução à Programação Orientada a Objectos Luis Ferreira
Características da Programação Orientada por Objetos (POO).
Conceito de Classe, Atributos, Métodos, e Eventos.
Conceito de Objeto.
Conceito de Encapsulamento.
Conceito de Visibilidade de Classes, Métodos e Atributos.
Diagramas de Classe.
O ambiente de trabalho do Visual C#.
Objetos básicos e outras características básicas da linguagem do Visual C# e respetivo ambiente de trabalho.
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;}
}
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.