WZK'Z D K KZ/ Ed K : dK^ -...

16

Transcript of WZK'Z D K KZ/ Ed K : dK^ -...

Fernando Albuquerque

INFORMAÇÃO E COMUNICAÇÃO

PROGRAMAÇÃO ORIENTADA A OBJETOS

AutorFernando AlbuquerqueFormado em Engenharia Elétrica pela Universidade de Brasília. Mestre em Ciência da Compu-tação pela Universidade de Londres. Engenheiro certificado pela Novell (CNE). Profissional de informática há mais de 15 anos, durante os quais atuou nas áreas de desenvolvimento, consulto-ria e treinamento. Autor de livros e artigos nas áreas de redes de computadores e orientação a objetos. Professor do Departamento de Ciência da Computação da Universidade de Brasília.

RevisãoNT Editora e Figuramundo

Projeto GráficoNT Editora

Editoração EletrônicaNT Editora e Figuramundo

CapaNT Editora

NT Educação, uma empresa do Grupo NTSCS Q2 - Bl. D - Salas 307 e 308 - Ed. Oscar NiemeyerCEP 70316-900 - Brasília - DFFone: (61) [email protected] e www.grupont.com.br

Programação Orientada a Objetos. / NT Editora.

-- Brasília: 2013. 160p. : il. ; 21,0 X 29,7 cm.

ISBN - 978-85-68004-81-4

1. Programação Orientada a Objetos – 2. Java e UML – 3. Ciência da Computação.

Copyright © 2014 por NT Editora.Nenhuma parte desta publicação poderá ser reproduzida por

qualquer modo ou meio, seja eletrônico, fotográfico, mecânico ou outros, sem autorização prévia e escrita da NT Editora.

LEGENDA

ÍCONES

Prezado(a) aluno(a),Ao longo dos seus estudos, você encontrará alguns ícones na coluna lateral do material didático. A presença desses ícones o ajudará a compreender melhor o conteúdo abor-dado e também como fazer os exercícios propostos. Conheça os ícones logo abaixo:

Saiba MaisEste ícone apontará para informações complementares sobre o assunto que você está estudando. Serão curiosidades, temas afins ou exemplos do cotidi-ano que o ajudarão a fixar o conteúdo estudado.

ImportanteO conteúdo indicado com este ícone tem bastante importância para seus es-tudos. Leia com atenção e, tendo dúvida, pergunte ao seu tutor.

DicasEste ícone apresenta dicas de estudo.

Exercícios Toda vez que você vir o ícone de exercícios, responda às questões propostas.

Exercícios Ao final das lições, você deverá responder aos exercícios no seu livro.

Bons estudos!

4 NT Editora

Sumário

1. INTRODUÇÃO .................................................................................................. 91.1 Decomposição funcional .......................................................................................................91.2 Orientação a objetos ...............................................................................................................91.3 Fases de desenvolvimento ................................................................................................. 111.4 Linguagens de programação ............................................................................................ 111.5 Testes ......................................................................................................................................... 121.6 Metodologias .......................................................................................................................... 12

2. A LINGUAGEM JAVA ...................................................................................... 162.1 Introdução ............................................................................................................................... 162.2 Enunciados e comentários ................................................................................................. 162.3 Variáveis e constantes .......................................................................................................... 162.4 Operadores .............................................................................................................................. 172.5 Controle de fluxo ................................................................................................................... 202.6 Controle de repetição .......................................................................................................... 23

3. CLASSES ......................................................................................................... 313.1 Definição .................................................................................................................................. 313.2 Atributos ................................................................................................................................... 333.3 Tipos de atributos .................................................................................................................. 343.4 Valor inicial de um atributo ................................................................................................ 343.5 Atributos constantes ............................................................................................................ 343.6 Métodos .................................................................................................................................... 353.7 Visibilidade ............................................................................................................................... 363.8 Construtores ............................................................................................................................ 383.9 Diagramas de classes ........................................................................................................... 40

4. OBJETOS......................................................................................................... 444.1 Definição .................................................................................................................................. 444.2 Identificador de objeto ....................................................................................................... 444.3 Tipos de objetos ..................................................................................................................... 454.4 Instanciando uma classe..................................................................................................... 474.5 Representação na UML ....................................................................................................... 49

5Programação Orientada a Objetos

5. RELACIONAMENTOS ..................................................................................... 525.1 Diagramas de classes ........................................................................................................... 525.2 Diagramas de objetos .......................................................................................................... 525.3 Associações ............................................................................................................................. 525.4 Navegabilidade ...................................................................................................................... 545.5 Nomes das associações ....................................................................................................... 555.6 Papéis em associações......................................................................................................... 555.7 Multiplicidade e cardinalidade ......................................................................................... 565.8 Associação um para um ...................................................................................................... 565.9 Associação muitos para um ............................................................................................... 575.10 Associação um para muitos ............................................................................................ 585.11 Associação muitos para muitos ..................................................................................... 585.12 Associações qualificadas .................................................................................................. 605.13 Associações exclusivas ...................................................................................................... 605.14 Associações ordenadas ..................................................................................................... 615.15 Atributos de uma associação ......................................................................................... 615.16 Agregações ........................................................................................................................... 625.17 Especializações e generalizações .................................................................................. 625.18 Métodos abstratos .............................................................................................................. 665.19 Métodos finais ...................................................................................................................... 675.20 Interfaces ............................................................................................................................... 68

6. MENSAGENS .................................................................................................. 726.1 Troca de mensagens ............................................................................................................. 726.2 Polimorfismo ........................................................................................................................... 736.3 Métodos estáticos ................................................................................................................. 766.4 Diagramas de sequência .................................................................................................... 76

7. BIBLIOTECAS DE CLASSES ........................................................................... 827.1 Packages ................................................................................................................................... 827.2 Nomes dos packages ........................................................................................................... 827.3 Localizações dos packages ................................................................................................ 837.4 Classes e interfaces em um package .............................................................................. 837.5 Nomes em Java ...................................................................................................................... 847.6 Controle de acesso ................................................................................................................ 857.7 Packages padrão .................................................................................................................... 867.8 Packages na UML ................................................................................................................... 90

6 NT Editora

8. EXCEÇÕES ...................................................................................................... 958.1 Informando erros................................................................................................................... 958.2 Lançando exceções .............................................................................................................. 958.3 Tratamento de exceções ..................................................................................................... 968.4 Passando a responsabilidade do tratamento.............................................................. 978.5 Definindo uma exceção ...................................................................................................... 98

9. ESTADOS E EVENTOS .................................................................................. 1039.1 Estados ....................................................................................................................................1039.2 Eventos ....................................................................................................................................1039.3 Transições ...............................................................................................................................1069.4 Guarda .....................................................................................................................................1079.5 Diagramas de estados .......................................................................................................1089.6 Diagramas de estados na UML .......................................................................................1099.7 Subestados ............................................................................................................................1129.8 Transições ...............................................................................................................................112

10. IMPLEMENTAÇÃO ..................................................................................... 11710.1 Alternativas .........................................................................................................................11710.2 Interfaces baseadas em caracteres .............................................................................11710.3 Interfaces gráficas .............................................................................................................11810.4 Applets ..................................................................................................................................12010.5 Tratamento de eventos ...................................................................................................12110.6 Gerenciadores de layout ................................................................................................12210.7 Painéis ...................................................................................................................................123

11. ESTUDOS DE CASO ................................................................................... 12911.1Especificando o programa ..............................................................................................12911.2 Programa exemplo ...........................................................................................................12911.3 Interface gráfica principal ..............................................................................................13011.4 Especificação da fonte ....................................................................................................13711.5 Outras interfaces gráficas ..............................................................................................14111.6 Acessos aos arquivos .......................................................................................................14711.7 Exceções ...............................................................................................................................149

7Programação Orientada a Objetos

12. FERRAMENTAS DE DESENVOLVIMENTO ................................................ 15112.1Ambientes integrados de desenvolvimento ...........................................................15112.2 Projetos .................................................................................................................................15112.3 Edição de classes ...............................................................................................................15212.4 Interfaces gráficas .............................................................................................................15212.5 Tratamento dos eventos .................................................................................................15212.6 Navegação ...........................................................................................................................15312.7 Depuração ...........................................................................................................................15312.8 Bibliotecas e documentação ........................................................................................15312.9 Ferramentas CASE ............................................................................................................15412.10 UML e CASE ......................................................................................................................15412.11 Casos de uso .....................................................................................................................15412.12 Diagramas de classes ....................................................................................................15512.13 Diagramas de sequência e de interação ................................................................15612.14 Outros diagramas e geração de código .................................................................157

EXERCÍCIOS PROPOSTOS ............................................................................... 158

BIBLIOGRAFIA ................................................................................................. 160

9Programação Orientada a Objetos

1. INTRODUÇÃO

1.1 Decomposição funcionalUma abordagem típica usada no desenvolvimento de programas complexos consiste em decom-

por os programas em diversos módulos e dividir cada módulo em diversas funções (Fig.1.01). Cada fun-ção é responsável por parte da solução do problema. Esta abordagem de desenvolvimento se baseia na decomposição funcional. Embora a decomposição funcional tenha sido amplamente utilizada nos últimos anos, apresenta algumas deficiências, tais como o fraco acoplamento entre dados e funções.

Fraco acoplamento: Cada função é responsável por parte da solução do problema. Esta abor-dagem de desenvolvimento se baseia na decomposição funcional, que, embora tenha sido amplamente utilizada nos últimos anos, apresenta algumas deficiências. Um tipo de deficiên-cia facilmente identificável é o fraco acoplamento entre os dados e as funções.

Fortemente acoplados: Em um programa desenvolvido usando-se orientação a objetos, existem facilidades para se definir quais as funções que podem acessar determinados dados. É fácil, portanto, limitar o acesso aos dados a apenas um conjunto determinado de funções. Por este motivo, diz-se que existe forte acoplamento entre dados e funções.

1.2 Orientação a objetosA orientação a objetos é uma tecnologia de desenvolvimento composta por metodologias e

linguagens usadas na análise, no projeto e na implementação de programas. Apesar de existir há décadas, só recentemente a orientação a objetos adquiriu popularidade. Em parte, esta popularidade decorre do uso crescente de interfaces gráficas e da arquitetura distribuída dos programas atuais, ca-racterísticas que são adequadamente suportadas pela orientação a objetos.

Os programas desenvolvidos usando-se a orientação a objetos são compostos por módulos cujos dados e funções são fortemente acoplados (Fig.1.02). Estes módulos são denominados “obje-

SUMÁRIO

Repr

oduç

ão p

roib

ida.

Cop

yrig

ht ©

NT

Edito

ra. T

odos

os

dire

itos

rese

rvad

os.

10 NT Editora

tos” e, em cada um deles, temos dados e fun-ções. As funções são denominadas “métodos” e contêm o código responsável pelos serviços providos pelos objetos. Os dados, por sua vez, só podem ser acessados por meio do código presente nos métodos do objeto (Fig.1.03). Por isso, costuma-se dizer que os dados são encapsulados.

Considere, por exemplo, um obje-to que modela uma conta corrente em um sis-tema bancário. Por meio dos métodos, pode-se, por exemplo, depositar e sacar. Em outras palavras, os serviços depositar e sacar são providos pelos métodos usados para solicitar serviços aos objetos que modelam as contas bancárias. Além dos métodos responsáveis pelos serviços, cada objeto que mo-dela uma conta bancária contém dados, como o nome do dono da conta e o valor do saldo. Como os dados normalmente não podem ser acessados diretamente, o acesso é feito por meio dos métodos.

O forte acoplamento entre dados e código facilita o desenvol-vimento de programas modulares. A modularidade resultante facilita tanto a manutenção e a evolução dos programas quanto a reutilização de código entre programas destinados a uma mesma área de aplica-ção. A possibilidade de se desenvolver programas a partir de módulos existentes reduz o custo de desenvolvimento, sendo uma das vanta-gens da orientação a objetos.

Exercitando o conhecimento...

Leia com atenção cada uma das afirmações abaixo e identifique-as como Verdadei-ra ou Falsa.

1 – Nos módulos, estão contidos os códigos responsáveis pelos serviços providos pe-los objetos.

( ) Verdadeira

( ) Falsa

2 – Os dados só podem ser acessados através do código presente nos métodos do objeto.

Por isso, costuma-se dizer que os dados estão encapsulados.

( ) Verdadeira

( ) Falsa

Fig.1.03 – Encapsulamento dos dados

SUMÁRIO

Repr

oduç

ão p

roib

ida.

Cop

yrig

ht ©

NT

Edito

ra. T

odos

os

dire

itos

rese

rvad

os.

11Programação Orientada a Objetos

Fig.1.04 – Fases do desenvolvimento

1.3 Fases de desenvolvimentoO desenvolvimento de um programa orientado a objetos é realizado em fases: análise, projeto

e implementação (Fig.1.04). A primeira fase é a análise, na qual é feita a especificação dos requisitos do programa que é descrito com base nas expectativas dos usuários. Ao final, devem ser removidas as omissões da especificação inicial e os usuários devem estar convencidos de que a especificação descreve o programa desejado. As principais atividades da análise são:

• levantar a especificação junto aos usuários;

• descrever o programa por meio de casos de uso;

• identificar objetos no domínio do problema;

• identificar, para cada objeto, suas responsabilidades;

• identificar os relacionamentos entre os objetos.

A partir do momento em que os aspectos de implementa-ção começam a influenciar os modelos, tem início a fase de proje-to. Nessa fase, os modelos definidos na análise são adaptados ao ambiente no qual o programa será implantado. Os modelos resul-tantes da fase de projeto descrevem o programa da forma como o mesmo será realmente implementado. As principais atividades do projeto são:

• identificar aspectos do ambiente de implementação e investigar as consequências de tais aspectos sobre o programa a ser implementado;

• traduzir os modelos gerados na fase de análise de forma a escreverem um programa possível de ser implantado, levando em consideração as restrições impostas pelo ambiente de implementação;

• identificar os objetos e como estes interagem.

A fase seguinte no desenvolvimento de um programa é a implementação. No caso de um programa orientado a objetos, a implementação torna-se mais simples se for usada uma linguagem de programação que suporte os conceitos presentes na orientação a objetos. Com tais linguagens, é possível mapear os conceitos usados na análise e no projeto para os códigos dos programas. Os principais conceitos que devem ser suportados são: classes (tipos de objetos), objetos, polimorfis-mo e herança. Vale salientar que a orientação a objetos é uma tecnologia. O simples uso de uma linguagem de programação adequada não é suficiente para garantir que os benefícios desta tecno-logia sejam alcançados.

1.4 Linguagens de programaçãoNo que diz respeito ao suporte à orientação a objetos, as linguagens de programação são clas-

sificadas como convencionais, baseadas em objetos ou orientadas a objetos. As linguagens conven-cionais e as baseadas em objetos não suportam integralmente os conceitos presentes na orientação a objetos. São linguagens convencionais: C, Pascal, Cobol, Fortran e Basic. São linguagens baseadas em objetos: ADA e Modula-2.

As linguagens orientadas a objetos suportam integralmente os principais conceitos presentes na orientação a objetos. Os principais conceitos suportados por tais linguagens são: classes (tipos de objetos), objetos, polimorfismo e herança. São linguagens orientadas a objetos: C++, Object Pascal, Smalltalk e Java.

SUMÁRIO

Repr

oduç

ão p

roib

ida.

Cop

yrig

ht ©

NT

Edito

ra. T

odos

os

dire

itos

rese

rvad

os.

12 NT Editora

1.5 TestesAo longo do desenvolvimento de um programa orientado a objetos, é fundamental que seja

dada atenção ao planejamento e à execução dos testes a fim de se garantir a qualidade do programa. Os testes devem ser parte integrante do desenvolvimento, não devendo ser realizados apenas ao final da implementação. Os testes são geralmente classificados como: testes das unidades, testes de inte-gração e testes do sistema.

Os testes das unidades têm por objetivo testar o funcionamento individual de cada objeto e os serviços por eles providos. Os testes de integração verificam agrupamentos de obje-tos, denominados subsistemas e os testes do sistema, por fim, testam o sistema como um todo. Os testes de integração e do sistema verificam se o programa atende aos casos de uso descritos na especificação, submetendo-o a diferentes cargas de uso e analisando aspectos relativos à performance.

1.6 MetodologiasO desenvolvimento de um programa orientado a objetos pode se tornar uma tarefa mais sim-

ples se for adotada uma metodologia de desenvolvimento. As metodologias descrevem técnicas para facilitar e organizar o desenvolvimento de programas e geram, como resultado, diversos modelos. Cada modelo apresenta uma visão do sistema: visão de dados, de comportamento e da arquitetura. Os modelos apresentam um nível crescente de detalhamento dependendo da fase em que se encon-tra o desenvolvimento.

A visão de dados, representada por meio de diagramas de classes e diagramas de objetos (Fig.1.05), descreve os tipos de objetos e como estes se relacionam. A visão de comportamento, re-presentada, por exemplo, por meio de diagramas de interação (Fig.1.06), descreve o comportamento dinâmico do sistema. A visão de arquitetura descreve, por exemplo, a divisão do sistema em subsiste-mas e pode assumir diferentes formas, dependendo da metodologia utilizada (Fig.1.07).

Fig.1.06 – Diagrama de interaçãoFig.1.05 – Diagrama de classe e de objetos

SUMÁRIO

Repr

oduç

ão p

roib

ida.

Cop

yrig

ht ©

NT

Edito

ra. T

odos

os

dire

itos

rese

rvad

os.

13Programação Orientada a Objetos

Fig.1.07 – Diagrama da arquitetura

As metodologias de desenvolvimento são geralmente compostas por um processo e por uma linguagem de modelagem (Fig.1.08). O processo descreve aspectos como: fases de desenvolvimento, documentos resultantes de cada fase, conselhos para a identificação dos objetos, etc. A linguagem representação dos modelos que descrevem o programa em desenvolvimento e merece destaque é a Unified Modeling Language (UML). Dentre as diversas metodologias para análise e projeto de progra-mas orientados a objetos podemos destacar:

• Object Oriented Design;

• Object Oriented Systems Analysis;

• Object Modeling Technique;

• Object Oriented Analysis;

• Hierarchical Object Oriented Design;

• Object Oriented Structured Design;

• Responsability Driven Design;

• Object Oriented Role Analysis; e

• Object Oriented Software Engineering.

As metodologias para o desenvolvimento de programas orientados a objetos apresentam di-versas similaridades, por exemplo:

• ao longo das fases de análise e projeto são mantidos integrados os dados e os comportamen-tos dos objetos;

• suportam classes, objetos e herança;

• sugerem como identificar classes e suas responsabilidades;

• sugerem como identificar características semelhantes entre classes e como agrupar classes em hierarquias;

• sugerem como identificar as interações entre objetos.

SUMÁRIO

Repr

oduç

ão p

roib

ida.

Cop

yrig

ht ©

NT

Edito

ra. T

odos

os

dire

itos

rese

rvad

os.

14 NT Editora

Parabéns, você fina-lizou esta lição!

Agora responda às questões ao lado.

Exercícios

Questão 01 – Com relação à Orientação de objetos, marque a afirmativa falsa:

a) possibilita o forte acoplamento entre dados e funções;

b) é uma tecnologia que se popularizou recentemente;

c) possibilita o desenvolvimento de programas modulares;

d) não facilita a reutilização do código.

Questão 02 – A respeito dos objetos, marque a afirmativa incorreta:

a) são compostos por dados e funções;

b) funções são chamadas métodos;

c) dados podem ser acessados a partir de qualquer função;

d) métodos definem uma interface para o objeto.

Questão 03 – Dentre as alternativas abaixo, marque aquela que não é responsabilidade da fase de análise:

a) levantar a especificação junto aos usuários;

b) especificar aspectos da plataforma de implementação;

c) identificar objetos no domínio do problema;

d) identificar omissões na especificação inicial.

Questão 04 – Dentre as alternativas abaixo, marque aquela que não é responsabilidade da fase de projeto:

a) elaborar especificação inicial;

b) levar em consideração aspectos da plataforma de implementação;

c) identificar objetos que serão codificados na implementação;

d) usar os modelos definidos na fase de análise.

Questão 05 – marque a afirmativa que não indica uma característica de uma linguagem orientada a objetos:

a) suporte e herança;

b) suporte a classes e objetos;

c) suporte a polimorfismo;

d) suporte a variáveis globais.

SUMÁRIO

Repr

oduç

ão p

roib

ida.

Cop

yrig

ht ©

NT

Edito

ra. T

odos

os

dire

itos

rese

rvad

os.

15Programação Orientada a Objetos

Questão 06 – marque a opção que não indica uma linguagem orientada a objetos:

a) Object Pascal;

b) Java;

c) C++;

d) C.

Questão 07 – A respeito de metodologias, marque a afirmativa falsa:

a) compostas por processos e linguagens de modelagem;

b) UML é um processo de modelagem;

c) Booch, Rumbaugh e Jacobson são famosos metodologistas;

d) existem diversas formas de metodologias de modelagem orientadas a objetos.

Questão 08 – Marque a afirmativa falsa a respeito de metodologias orientadas a objetos:

a) mantêm integrados os dados e o comportamento;

b) suportam como identificar a integração entre objetos;

c) sugere como identificar classes e agrupá-las em hierarquias;

d) usadas apenas na fase de projeto.

Questão 09 – Marque a afirmativa falsa a respeito de modularidade:

a) facilitada na orientação a objetos pelo encapsulamento;

b) reduz o tempo de desenvolvimento e facilita a manutenção;

c) nos módulos que compõem um programa orientado a objetos, dados e códigos são fracamente acoplados;

d) é possível o desenvolvimento de programas não orientados a objetos que se-jam modulares.

Questão 10 – Marque a afirmativa falsa sobre testes:

a) podem ser de unidade, de integração ou de sistema;

b) testes de unidades testam o funcionamento individual de cada objeto;

c) testes de integração testam o sistema como um todo;

d) testes de sistema verificam se o programa atende aos casos de uso especificados.

SUMÁRIO

Repr

oduç

ão p

roib

ida.

Cop

yrig

ht ©

NT

Edito

ra. T

odos

os

dire

itos

rese

rvad

os.