Você está na página 1de 12

Srie Fundamentos da Engenharia de Software

Paradigma Orientado a Objetos


PINHEIRO, lvaro Farias
Autor

I
Srie Fundamentos da Engenharia de Software
Paradigma Orientado a Objetos
Publicao 2017

O autor acredita que todas as informaes aqui apresentadas esto corretas e podem ser
utilizadas para qualquer fim legal. Entretanto, no existe qualquer garantia explcita ou implcita,
de que o uso de tais informaes conduzir sempre ao resultado desejado. Os nomes de sites e
empresas, por ventura, mencionados, foram utilizados apenas para ilustrar os exemplos, no
tendo vnculo nenhum com o livro, no garantindo a sua existncia nem divulgao. Eventuais
erratas estaro disponveis para download no site de publicao.

As imagens utilizadas neste livro foram obtidas na Internet.

Dados da Publicao

Pinheiro, lvaro Farias


Srie Fundamentos da Engenharia de Software: Paradigma Orientado a Objetos
Ano II Nmero 4 Recife, Abril de 2017
Selo Editorial: Publicao Independente

1. POO Introduo
2. POO Conceitos

II
Srie Fundamentos da Engenharia de Software
Paradigma Orientado a Objetos
Publicao Independente
Revista em portugus com o ttulo
Paradigma Orientado a Objetos
Srie Fundamentos da Engenharia de Software
Ano II Nmero 4
Recife Pernambuco Brasil
Abril de 2017

III
Srie Fundamentos da Engenharia de Software Ano II Nmero 4 POO

Introduo

Paradigma Orientado a Objetos (POO) consiste em expressar os problemas


como objetos, ao contrrio da anlise tradicional os quais eram em rotinas e
dados, que aqui foram substitudos por mtodos (comportamento) e atributos
(propriedades). Assim, quando colocado o problema de desenvolver um
sistema na anlise orientada a objetos, deve-se pensar como dividir esse
problema em objetos.

Figura 0.1 Conceitos

Fonte: Prprio Autor

Classes

Pensando em um sistema acadmico em POO teramos Alunos,


Administradores, Professores, Cursos, Turmas, etc. E a melhor maneira de
conceituar estes termos considerar um objeto do mundo real e mostrar como
podemos represent-lo em termos conceitos em POO. Assim, um objeto um
conceito que usamos para representar uma entidade do mundo real.
Exemplificando, um Aluno possui nome, data de nascimento, identidade, etc. E
alm dessas caractersticas (propriedades), possuem aes (mtodos) como
frequentar as aulas, fazer as avaliaes, etc. Em termos de POO para
podermos tratar os objetos temos que criar classes. Assim, uma classe
representa um conjunto de objetos que possuem comportamentos e
caractersticas comuns.

Na UML em primeiro lugar denomina-se uma classe e recomenda-se nome-la


capitalizando-a e deixando no singular. E em segundo lugar denominam-se as
propriedades, informaes especficas relacionadas a uma classe de objeto,
isto caractersticas dos objetos que as classes representam. Em terceira e
ltima parte, mtodos, que so aes que os objetos de uma classe podem
realizar. Assim tem-se um modelo para instanciar quantos objetos forem
necessrios. Dessa forma os objetos instanciados possuiro todas as
caractersticas e comportamentos definidos pela classe. Ento as classes
especificam a estrutura (propriedades) e os comportamentos (operaes) dos
objetos, que so instncias das classes.

http://www.alvarofpinheiro.eti.br/ Pgina 1
Srie Fundamentos da Engenharia de Software Ano II Nmero 4 POO

Geralmente em um sistema de mdio porte sero identificadas diversas


classes que compem o sistema. Neste contexto a UML surgiu como uma
proposta de ser uma linguagem para modelagem de dados que usava diversos
artefatos para representar o modelo de negcio; um destes artefatos o
diagrama de classes. Os diagramas de classes registram atributos e
operaes de uma classe e as restries de como os objetos podem ser
conectados, descrevendo tambm os tipos de objetos no sistema e os
relacionamentos entre eles e esse podem ser associaes e abstraes. Para
poder representar a visibilidade dos atributos e operaes, a UML usa os
seguintes smbolos: + pblico, visvel em qualquer classe; - privado, visvel
somente dentro da classe; # protegido, na classe e suas subclasses.

O relacionamento entre classes retrata as relaes entre os objetos. Exemplo:


um professor ministra uma disciplina para alunos numa sala. A UML
reconhece trs tipos mais importantes de relaes: dependncia, associao e
generalizao ou herana. Geralmente as classes no esto isoladas (coesas)
e se relacionam entre si (acoplamento). O relacionamento e a comunicao
entre as classes se definem em 3 tipos: Associaes que podem ser de
Agregao ou Composio; Generalizao ou herana; e Dependncias.

As associaes so relacionamentos estruturais entre instncias e especificam


que objetos de uma classe esto ligados a objetos de outras classes, podendo
ser unria, binria, etc. As associaes podem existir entre classes ou entre
objetos. Uma associao entre a classe Professor e a classe Disciplina (um
professor ministra uma disciplina) significa que uma instncia de Professor (um
professor especfico) vai ter uma associao com uma instncia de uma
Disciplina. Esta relao significa que as instncias das classes so
conectadas, seja fisicamente ou conceitualmente.

Dependncias so relacionamentos de utilizao no qual uma mudana na


especificao de um elemento pode alterar a especificao do elemento
dependente. A dependncia entre classes indica que os objetos de uma classe
usam servios dos objetos de outra classe. Generalizao ou herana, que
pode ser simples ou mltipla (composta), serve para relacionar um elemento
mais geral e um mais especfico, onde o elemento mais especfico herda as
propriedades e mtodos do elemento mais geral. Como a relao de
dependncia, ela existe s entre as classes. Um objeto particular no um
caso geral de outro objeto, apenas classes podem receber esse conceito.

Agregao um tipo de associao ( parte de ou todo-parte) onde o objeto


parte um atributo do todo, onde o objeto parte somente so criados se o todo
ao qual esto agregados seja criado. Pedidos composto por itens de
pedidos. Composio o relacionamento entre um elemento (o todo) e outros
elementos (as partes) onde as partes s podem pertencer ao todo e so
criadas e destrudas com ele.

O diagrama de classes lista todos os conceitos do domnio que sero


implementados no sistema e as relaes entre os conceitos. Ele muito
importante, pois define a estrutura do sistema a desenvolver. O diagrama de
classes consequncia do prvio levantamento de requisitos, definio de
casos de usos e classes. Como exemplo tem os passos de elicitao de
requisitos com os stakeholders do sistema a ser desenvolvido, usando a
tcnica de entrevista com os administradores, professores, etc. que a partir

http://www.alvarofpinheiro.eti.br/ Pgina 2
Srie Fundamentos da Engenharia de Software Ano II Nmero 4 POO

desses os objetos do sistema so definidos: Alunos, Professores, Turmas,


Cursos, etc. Definio dos atores do sistema: aluno, professor, administrador,
etc. Definio e detalhamento dos casos de uso: Matricular Aluno, Pagar
Matrcula, etc. Definio das classes: alunos, professor, etc.

Atributo representa uma propriedade que todos os objetos da classe tm,


porm cada objeto ter valores particulares para seus atributos. A UML, o
nome de um atributo um texto que deve capitalizar todas as primeiras letras
de cada palavra no nome menos a primeira palavra. Todos os mtodos tm
que respeitar exatamente a assinatura que composta pelo nome, nmero de
parmetros, tipos de dados e ordem. Um mtodo no pode acrescentar ou
cortar um parmetro. Para mandar a mensagem corretamente, devesse saber
qual a classe do objeto, j que cada classe tendo mtodo com assinatura
diferente.

Objetos

Agora que sabemos o conceito e como codificar uma classe, vamos entender
sobre objeto. Segundo os pais da UML (Rumbaugh, Jacobson e Booch) um
objeto uma instncia de uma classe, isto , trata-se de uma cpia da classe
na memria em tempo de execuo (runtime), sendo assim, um elemento
especfico que possui valores (estados) nos atributos (campos). A UML
representa um objeto usando um retngulo que o representa, onde o nome da
instncia do objeto seguido de dois pontos, seguido do nome da classe, com
essa formao sublinhada.

Mtodos

A classe principal em Java temos um mtodo principal "main" que por default
recebe um array de caracteres que poder ser preenchido quando o programa
principal for carregado. Ao carreg-lo uma mensagem ir aparecer na tela
"Mtodo chamado!", pois quando um objeto da classe instanciado o mtodo
exemplo invocado.

Figura 1.2 Tipos de Mtodos em POO

Fonte: Prprio Autor

Relacionamentos

O que vamos estudar agora como em Java se codifica os relacionamentos,


isto as associaes e heranas. Tambm iremos codificar os trs tipos de
classes: Concreta, Abstrata e Interface. Observe o diagrama de class:

Temos a seguinte modelagem. A classe principal est associada classe


cliente, esta por sua vez est associada s classes departamento e funo. A

http://www.alvarofpinheiro.eti.br/ Pgina 3
Srie Fundamentos da Engenharia de Software Ano II Nmero 4 POO

classe funo estende a classe abstrata cargo. A classe cliente uma


subclasse da classe pessoa-fsica que tambm pai da classe filha
fornecedor.

Ambas as classes, cliente e fornecedor so concretas, assim permitindo que


se instanciem objetos dessas classes.

Figura 1.3 Relacionamento

Fonte: Prprio Autor

J as classes pessoa-fsica e pessoa-jurdica so abstratas, assim sendo


possuem mtodos no implementados e por consequncia no permitindo que
se instanciem objetos diretamente dessas classes. Essas duas ltimas classes
so filhas da classe concreta pessoa que estende a classe abstrata
configuraes bsicas e implementa (realiza) as interfaces configuraes
especiais e configuraes avanadas.

Polimorfismo

a capacidade de classes mais abstratas possurem comportamentos


diferentes das classes concretas, isto , duas ou mais classes derivadas de
uma mesma superclasse podem invocar mtodos que tm a mesma
identificao (assinatura), mas comportamentos distintos, especializados para
uma das classes derivadas. A deciso sobre qual o mtodo que deve ser
selecionado, de acordo com o tipo da classe derivada, tomada em tempo de
execuo, atravs do mecanismo de ligao tardia. Observe a figura 10.5.

http://www.alvarofpinheiro.eti.br/ Pgina 4
Srie Fundamentos da Engenharia de Software Ano II Nmero 4 POO

Figura 1.4 Polimorfismo

Fonte: Prprio Autor

Mas para ser considerado polimorfismo, necessrio que os mtodos tenham


exatamente a mesma identificao, quer dizer, o mesmo nome de mtodo,
sendo utilizado o mecanismo de redefinio de mtodos, isto , sobrescrita
dos mtodos.

Override ou Sobreescrita, a redefinio ocorre quando um mtodo cuja


assinatura j tenha sido especificada recebe uma nova definio, ou seja, uma
nova implementao em uma classe derivada. O mecanismo de redefinio,
juntamente com o conceito de ligao tardia, a chave para a utilizao do
polimorfismo. importante observar que, quando polimorfismo est sendo
utilizado, o comportamento que ser adotado por um mtodo s ser definido
durante a execuo.

Overload ou Sobrecarga, um mtodo aplicado a um objeto selecionado para


execuo atravs da sua assinatura e da verificao a qual classe o objeto
pertence. Dois ou mais mtodos de uma mesma classe podem ter o mesmo
nome, desde que suas listas de parmetros sejam diferentes, constituindo
assim uma assinatura diferente. Tal situao no gera conflito, pois o
compilador capaz de detectar qual mtodo deve ser escolhido a partir da
anlise dos tipos de argumentos do mtodo.

Early Binding ou Ligao Prematura, quando um mtodo invocado durante a


compilao do programa, o mecanismo de ligao prematura.

Late Binding ou Ligao Tardia, quando a definio do mtodo que ser


efetivamente invocado s ocorre durante a execuo do programa, o
mecanismo de ligao usado o de tardia tambm conhecido pelos termos
dynamic binding ou run-time binding.

Em Java, todas as determinaes de mtodos a executar ocorrem atravs de


ligao tardia exceto em dois casos: mtodos declarados como final no
podem ser redefinidos e, portanto no so passveis de invocao polimrfica
da parte de seus descendentes e mtodos declarados como private so
implicitamente finais.

Modificadores

public boolean equals(Object obj) um mtodo proveniente da classe Object.


Por default, sua comparao utiliza o operador == para comparar os dois
objetos. Mas o objetivo aqui entender a palavra reservada public.

http://www.alvarofpinheiro.eti.br/ Pgina 5
Srie Fundamentos da Engenharia de Software Ano II Nmero 4 POO

Existem quatro modificadores bsicos: public, private, protected e package. A


figura abaixo explica a visibilidade que cada um desses modificadores aplicam
sobre as classes e mtodos.

Figura 1.5 Modificados

Fonte: Prprio Autor

http://www.alvarofpinheiro.eti.br/ Pgina 6
Srie Fundamentos da Engenharia de Software Ano II Nmero 4 POO

Livros da srie Fundamentos da Engenharia de Software


Fundamentos da Introduo Este livro sobre
Engenharia de Banco de Dados. processos de
Software: Neste so desenvolvimento
Conceitos abordados os de software,
Bsicos uma conceitos bsicos evidenciando a
coletnea de de bancos de necessidade de
disciplinas que dados e seus qualidade na
integradas sistemas construo de
servem para gerenciadores, sistemas,
fundamentar o mas com o foco conceituando a
entendimento da construo de na arquitetura relacional, porque diferena entre desenvolvimento
projetos de software com qualidade, ainda hoje o mercado faz uso em Adhoc e com processo. Para isso
isto , baseado em processos larga escala desses bancos de realizado a introduo engenharia
maduros e reconhecidos pela dados, mesmo que o paradigma de requisitos abordando as tcnicas
comunidade tecnolgica. O objetivo predominante seja o orientado a para a elicitao de requisitos que
deste livro fornecer ao leitor as objetos e que, j existam a um bom forneam subsdios necessrios para
bases necessrias para o tempo bancos orientados a objeto, uma construo de software com
desenvolvimento de aplicaes at mesmo os bancos objetos- maior qualidade, enfatizando a
sejam Desktop, Web ou Mobile. relacionais que so um hibrido entre necessidade de se aplicar na
Iniciando a leitura na Teoria da essas duas arquiteturas, o que construo de qualquer sistema as
Computao, passando por predomina ainda o relacional, tcnicas de anlise e modelagem,
Processos, Linguagens, Bancos de assim, este material focado na evidenciando o uso da linguagem da
Dados e finalizando com Sistemas linguagem de consulta estruturada Linguagem de Modelagem Unificada
de Informao e Colaborao. para os SGBD-Rs do mercado, com (UML) para diagramar um projeto de
Este livro pode ser lido captulo a foco na comparao de cinco dos software, explicando a necessidade
captulo ou somente a disciplina mais utilizados bancos relacionais, do uso de modelos na construo,
desejada, pois sua elaborao os quais so: Oracle, SQLServer, entrando com detalhes na anlise
consiste na compilao das MySQL, SQLBase e Interbase. orientada a objetos, com o objetivo
disciplinas fundamentais da de explorar os seus conceitos de
Engenharia de Software que so requisitos e modelagem integrados.
independentes, mas ao mesmo Este material finalizado com a
tempo se integram objetivando o introduo medidas de esforo de
desenvolvimento de aplicaes. desenvolvimento, tcnica necessria
parar responder as perguntas
bsicas de qualquer
desenvolvimento: Qual o prazo e
custo? E para responder a essas
questes abordado o uso da
mtrica anlise de ponto de funo.

Este livro aborda A motivao Este livro o


os sistemas que deste livro resultado do uso
so classificados exemplificar os da ferramenta MS
como informao, conceitos de Project da
a exemplo, Padres de Microsoft utilizada
sistemas de apoio Projetos utilizando na aplicao dos
a deciso, a linguagem de conceitos de
sistemas programao gesto de projetos
estratgicos, Java, sendo a do PMBOK com
sistemas construo uma as premissas da
gerenciais e sistemas transacionais. compilao das aulas produzidas engenharia de testes para aquisio
A produo deste material que com o intudo de facilitar o de qualidade nos produtos de
compe o volume 4 da coleo entendimento do assunto abordando software.
Fundamentos da Engenharia de os seguintes temas: Paradigma
Software resultado da compilao Orientado a Objetos que introduz o
das aulas produzidas nas disciplinas leitor nos conceitos do POO;
que compem os captulos deste Linguagem de Modelagem Unificada
livro. para apresentar a simbologia UML
dos conceitos de POO; Linguagem
de Programao Java apresentando
essa poderosa linguagem de
programao orientada a objetos
para exemplificar os padres de
projeto; e Padres de Projetos que
neste livro aborda os mais
referenciados nas academias, sendo
eles o GRASP e GoF.

http://www.alvarofpinheiro.eti.br/ Pgina 7
Srie Fundamentos da Engenharia de Software Ano II Nmero 4 POO

Este livro aborda Este livro introduz


basicamente os nas tecnologias
conceitos bsicos Web abordando
de programao os conceitos
como autmatos, bsicos para
tipos de desenvolvimento
linguagens, para Internet com
princpios dos a apresentao
compiladores, da plataforma Dot
paradigmas de Net e exibindo
desenvolvimento e lgica de dicas de codificao para a
programao. linguagem de marcao ASPX, para
a linguagem de script mais utilizada
pelos navegadores o JavaScript com
exemplos de CSS e principalmente
dicas de cdigo para a linguagem de
programao CSharp e de banco de
dados SQL com foco no SQLServer.
.

http://www.alvarofpinheiro.eti.br/ Pgina 8

Você também pode gostar