Escolar Documentos
Profissional Documentos
Cultura Documentos
DISCIPLINA DE
PROGRAMAÇÃO
AVANÇADA EM JAVA
TEMA I: INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETOS
Porém, antes de avançar e aprofundar nestes conceitos, vamos fazer uma breve revisão dos
conceitos básicos de programação orientada a objetos. Começaremos por contextualizar o
conceito “objeto” em programação bem como o conceito de classe de objetos. Mais tarde será
apresentada a abordagem aplicada em programação orientada a objetos para depois debruçar-
se um pouco mais nos elementos que compõe uma classe de objetos. Para terminar apresenta-
se os mecanismos de aplicação de classe de objetos bem como a manipulação dos elementos
do objeto.
Objetivos
Ao completar esta unidade temática 1.1, você deverá ser capaz de:
• Compreender os conceitos “classe” e “objeto” na programação orientada a objeto;
• Definir os conceitos “classe” e “objeto”;
• Diferenciar os conceitos “classe” e “objeto”;
• Descrever objetos do mundo real em remos de caraterísticas e habilidades.
Sumário
A programação orientada a objetos é uma técnica de programação que procura aproximar o
código à realidade que nos rodeia. Quando olhamos ao nosso redor vemos objetos, esses
objetos têm suas características, sua forma de estar e propósitos específicos. No mundo real,
os objetos encontram-se agrupados em classes ou famílias de objetos; por exemplo:
eletrodomésticos, automóveis, telemóveis, etc. Uma classe de objetos descreve as
características comuns bem como as habilidades (ou propósito) de cada objeto por ela
representada.
Cada objeto pertence a uma classe (família) a qual descreve as características e habilidades dos
objetos daquela família. Uma classe de objetos é representada em forma textual em ficheiro do
tipo “.java” onde são descritas as características dos objetos por ela representada; estas
características são descritas em forma de variáveis, as chamadas variáveis de instância ou
atributos da classe.
Além das características, uma classe de objetos define as “habilidades” dos objetos, isto é,
aquilo que os objetos [daquela classe] “podem fazer” (o propósito para o qual existem).
Classe e Objeto
A programação orientada a objetos procura aproximar o código à realidade que nos rodeia.
Quando olhamos ao nosso redor vemos objetos, esses objetos têm suas características, sua
forma de estar e propósitos específicos. No mundo real, os objetos encontram-se agrupados em
classes ou famílias de objetos; por exemplo: eletrodomésticos, automóveis, telemóveis, etc.
Uma classe de objetos descreve as características comuns bem como as habilidades (ou
propósito) de cada objeto por ela representada. Na figura 1 temos um exemplo de representação
de classe de objetos. Note que aqui lista-se algumas possíveis características que podem
interessar para descrever a classe de objetos em causa, o automóvel.
Cada objeto pertence a uma classe (família) a qual descreve as características e habilidades dos
objetos daquela família. Uma classe de objetos é representada em forma textual em ficheiro do
tipo “.java” onde são descritas as características dos objetos por ela representada; estas
características são descritas em forma de variáveis, as chamadas variáveis de instância ou
atributos da classe. No exemplo apresentado na figura 1, algumas características comuns a
todos os automóveis seriam: marca, modelo, ano fabrico, número de registo, etc.
Além das características, uma classe de objetos define as “habilidades” dos objetos, isto é,
aquilo que os objetos [daquela classe] “podem fazer” (o propósito para o qual existem). No
exemplo do automóvel, algumas habilidades seriam por exemplo: mover-se de um ponto para
outro, travar, transportar, iluminar, etc.
Em POO as “habilidades” dos objetos são representadas em forma de métodos (funções); trata-
se de rotinas que manipulam os dados do objeto, isto é, modificam o estado do objeto!
Considere por exemplo o objeto abstrato “Conta Bancária”. Uma Conta Bancária pode ser
descrita pelo número, titular e saldo; estas são algumas características da Conta Bancária. As
habilidades da Conta Bancária seriam, por exemplo: depositar, transferir e levantar dinheiro.
Neste caso, as habilidades correspondem às operações sobre a Conta. Cada uma das operações
mencionadas, modifica o estado da conta, neste caso em concreto o saldo da Conta.
Em POO, a classe é considerada “descritor” do objeto e o objeto instância dessa classe. Uma
instância de objeto tem representação na memória do computador.
Bibliografia
https://www.caelum.com.br/apostila-java-orientacao-objetos
https://docs.oracle.com/javase/tutorial/java/concepts/index.html
Objetivos
Ao completar esta unidade, você deverá ser capaz de listar explicar os passos envolvidos no
processo de programação orientada a objetos.
Sumário
Quando se programa orientado a objetos, o primeiro passo é a identificação das entidades
envolvidas; de seguida converte-se as entidades em classes de objetos para finalmente
instanciar-se as classes e manipular-se tais instâncias com recurso aos métodos
disponibilizados pelos objetos. É importante que o programador identifique claramente estes
momentos quando estiver a compor a sua solução, pois caso contrário incorre-se ao risco de se
conceber uma solução que não segue corretamente os princípios de orientação a objetos.
Após a criação das classes de objeto, o passo seguinte é a composição da solução o que passa
pela criação e manipulação dos objetos das classes [inicialmente criadas]. A manipulação de
objetos equivale ao processamento de dados e é feito recorrendo às “habilidades” do objeto,
que são rotinas que manipulam os dados estas rotinas ficam representadas em forma de
métodos nas classes de objetos.
Para melhor compreensão dos passos anunciados anteriormente vamos considerar o exemplo
seguinte:
“Suponha que que se pretenda criar uma aplicação que auxilie no cálculo da área de um
retângulo. Detalhe os passos necessários para criar a aplicação em causa recorrendo a
técnica de programação orientada a objetos.”
Para este problema, seguindo os passos para programar orientado a objetos, procedemos da
seguinte maneira:
Bibliografia
https://www.caelum.com.br/apostila-java-orientacao-objetos
https://docs.oracle.com/javase/tutorial/java/concepts/index.html
Objectivos
Ao completar esta unidade temática 1.3, você deverá ser capaz de:
• Listar e descrever os elementos básicos de uma classe de objetos;
• Diferenciar atributos de instância e atributos de classe bem como métodos de instância
e métodos de classe;
Sumario
Uma classe de objetos é a base para o processo de programação com orientação a objetos.
Normalmente em projetos de desenvolvimento, primeiro cria-se as classes de objeto para
depois compor a aplicação. Uma classe de objetos é criada em um ficheiro plano com extensão
“.java”. Dentro de uma classe java podemos encontrar os seguintes elementos fundamentais:
(1) atributos (2) construtores e (3) métodos.
Os atributos descrevem as caraterísticas dos objetos, exemplo: marca, ano fabrico, modelo, no
caso de Automóvel. Os atributos podem ser de dois tipos de atributos: os atributos de instância
e os atributos de classe; o primeiro representa as características intrínsecas dos objetos, o
segundo trata-se de variáveis auxiliares que podem ser usadas a partir da classe. Os atributos
de classes são definidos com recurso à palavra reservada “static”.
O construtor é um método especial que serve para construir as instâncias da classe. Dentro de
uma classe de objetos pode-se definir múltiplos construtores e cada construtor define uma
forma de criação de instância daquela classe. Todo e qualquer objeto (instância de classe) é
criada recorrendo a um dos construtores da classe.
Os métodos representam as habilidades dos objetos, isto é, aquilo que os objetos são capazes
de fazer. Normalmente, eles manipulam os dados do objeto (valores dos atributos)
modificando-os ou processando-os ou ainda difundindo-os. Os métodos dentro de uma classe
de objetos podem ser, métodos de instância ou métodos de classe. Os de instância são aqueles
que manipulam os atributos do objeto ao passo que os métodos de classe são apenas métodos
auxiliares que realizam operações extra. Estes métodos são definidos recorrendo a palavra
reservada “static”.
O construtor
O construtor é um método especial cuja função é a geração de objetos (instâncias) da classe. O
construtor diferencia-se dos restantes métodos da classe (1) por usar o mesmo identificador que
o da classe e (2) por não apresentar o tipo de retorno na sua estrutura.
Todo e qualquer objeto (instância) é criado recorrendo a um construtor, este pode ter sido
definido explicitamente pelo criador da classe ou ser implícito no caso de o criador da classe
não incluir nenhum construtor, neste último caso há possibilidade de se usar o construtor
implícito, este é um construtor que não recebe parâmetros.
Note que dentro da mesma classe de objetos pode se incluir vários construtores desde que
tenham parâmetros diferentes, quer em quantidade quer em tipos de dados.
No exemplo do retângulo foi definido apenas um construtor o qual está delimitado pelo número
três na figura 1.
Os métodos
Os métodos representam as habilidades dos objetos, isto é, aquilo que os objetos são capazes
de fazer. Normalmente, eles manipulam os dados do objeto (valores dos atributos)
modificando-os ou processando-os ou ainda difundindo-os. No caso da classe Retângulo,
foram definidos dois métodos, representando as habilidades dos objetos do tipo Retângulo, são
eles: calcularArea e visualiza. Estes métodos nos dizem respetivamente que (1) “qualquer que
seja o retângulo é capaz de calcular a sua própria área” e (2) “qualquer que seja o retângulo é
capaz de visualizar os seus próprios dados”. Note a presença do método
“imprimirQtdObjetosCriados”, este método à semelhança da variável “objectosCriados” é um
método de classe e não de instância, portanto não representa nenhuma habilidade dos objetos
do tipo Retângulo. Para a sua invocação não há necessidade de existência de instância de classe.
Quanto aos métodos de instância, os mesmos só podem ser invocados sobre uma instância ou
a partir de um ponto no interior da classe.
À semelha dos atributos, os métodos possuem um modificador de visibilidade que define as
regras de acesso aos mesmos.
O pacote define o local onde a classed eve ser armazenada no projeto. O uso de pacotes permite melhor
organização do elementos do projeto. Normalmente dentro de um pacote são colocadas as classes e
interfaces relacionados. A definição do pacote dentro de uma classe de objetos aparece na primeira linha
da classe.
A importação permite que classes externas (ao pacote em que a classe está) sejam usadas na classe
corrente.
Os cometários são textos que permite descrever os elementos da classe. É uma boa prática comentar
trecho de código não explícitos que poderiam causar confusão de entendimento do código no futuro.
A figura seguinte apresenta a classe Retângulo com os elementos descritos acima incluidos.
No ponto 1 e 5 temos exemplos de comentários internos a classe. Os comentários internos são aqueles
que ficam disponíveis apenas no interior da classe. Este tipo de comentários pode ser em uma linha
(ponto 5) ou em múltiplas linhas (ponto 1). Os comentários de uma linha são iniciados por “//” e os
comentários em múltiplas linhas são iniciados por “/*” e terminados por “*/”.
No ponto 2 temos a definição do pacote. Neste caso a nossa classe ficará armazenada na pasta
“pooa/unidade/_01” do projeto.
No ponto 3, temos exemplo de importação da classe System. A importação é feita indicando o pacote + o
nome da classe. No caso deste exemplo, a classe System fica armazenada no pacote “java.lang”. Note
que neste caso específico, a importação desta classe é meramente ilustrativa pois as classes do pacote
java.lang ficam disponíveis dentro de qualquer classe mesmo sem serem importadas.
Objectivos
Ao completar esta unidade temática 1.4, você deverá ser capaz de:
• Compreender o processo de instanciação e invocação de métodos sobre instância de
classe.
• Ser capaz de instanciar classes e invocar métodos sobre instancias;
• Diferenciar o uso de métodos e atributos de classe dos métodos e atributos de instância;
• Diferenciar instância e referência a instância.
Sumario
Instanciação é o mecanismo pelo qual são geradas instâncias de classe, isto é, os objetos da
classe. Conforme referido na unidade temática 1.1, um objeto agrega dados e esses dados
podem ser manipulados a partir do próprio objeto recorrendo às habilidades deste. As
instâncias são criadas recorrendo a um dos construtores da classe.
Bibliografia
https://www.caelum.com.br/apostila-java-orientacao-objetos
https://docs.oracle.com/javase/tutorial/java/concepts/index.html