CLASSES, OBJETOS, MÉTODOS E STRING

Propaganda
1
CLASSES, OBJETOS, MÉTODOS E STRING
Construir software rapidamente, corretamente e economicamente é um
objetivo difícil de alcançar. Objetos, ou, mais precisamente as classes de
objetos, são, essencialmente, componentes de software reutilizáveis. Há
objetos de data, objetos de tempo, objetos de áudio, objetos de vídeo, objetos
de automóveis, objetos de pessoas, etc. Quase qualquer substantivo pode ser
representado como um atributo em termos de objeto de software (por exemplo,
nome, cor e tamanho) e comportamentos (por exemplo, calcular, mover-se e
comunicar).
O AUTOMÓVEL COMO UM OBJETO
Suponha que você queira dirigir um carro e fazê-lo ir mais rápido,
pisando o pedal do acelerador. O que deve acontecer antes de você fazer
isso?
Antes de você pode dirigir um carro, alguém tem que projetá-lo.
Um carro geralmente começa como desenhos de engenharia, que
incluem o projeto para um pedal de acelerador.
Os pedais de aceleração, de freio e volante ocultam do motorista os
mecanismos complexos que fazem o carro ir mais rápido, que
retardam e giram o carro.
Você não pode dirigir um carro de desenhos de engenharia. Antes que
você possa dirigi-lo, ele deve ser construído a partir dos desenhos de
engenharia que o descrevem. Mesmo um carro completo com o pedal do
acelerador para faze-lo ir mais rápido, não é suficiente, pois o carro não
acelerará por conta própria, o motorista deve pressionar o pedal para acelerar
o carro.
MÉTODOS E CLASSES
Realizar uma tarefa em um programa exige um método. O método
abriga as declarações do programa que executam as tarefas. O método
esconde estas instruções do seu usuário, assim como o pedal do acelerador de
um carro esconde a partir do condutor os mecanismos de tornar o carro mais
rápido. Uma classe (unidade de programa) Java abriga o conjunto de métodos
que executam tarefas da classe. Por exemplo, uma classe que representa uma
conta bancária pode conter um método para depositar dinheiro para uma conta,
outro para retirar dinheiro de uma conta e um terceiro para saber qual é o saldo
atual da conta.
HTTP://erinaldosn.wordpress.com
2
INSTANCIAÇÃO
Você deve criar um objeto de uma classe antes de um programa
executar as tarefas que os métodos da classe definem. O processo de fazer
isso é chamado instanciação. Um objeto é então referida como uma instância
de sua classe.
REUTILIZAR
Uma classe pode ser reutilizada várias vezes para construir vários
objetos. A reutilização de classes existentes para construir novas classes e
programas economiza tempo e esforço. A reutilização também ajuda a
construir sistemas mais confiáveis e eficazes, porque as classes existentes e
componentes, muitas vezes já passaram por extensos testes, depuração e
ajuste de desempenho.
MENSAGENS E CHAMADA DE MÉTODOS
Quando você dirige um carro, ao pisar o pedal do acelerador é enviada
uma mensagem para o carro realizar uma tarefa – isto é, ir mais rápido. Da
mesma forma, você envia mensagens para um objeto. Cada mensagem é
implementada como uma chamada de método que indica a um método do
objeto executar sua tarefa.
ATRIBUTOS E VARIÁVEIS DE INSTÂNCIA
Um carro, além de ter capacidade para realizar tarefas, também tem
atributos, como cor, número de portas, a quantidade de combustível no tanque,
sua velocidade atual e o total de quilometragem dirigida. Os atributos do carro
são representados como parte de projeto nos diagramas de engenharia (que
inclui, por exemplo, um velocímetro e medidor de combustível). Cada carro tem
os seus próprios atributos.
Da mesma forma, um objeto traz consigo atributos de como ele é
usado em um programa. Esses atributos são especificados como parte da
classe do objeto. Por exemplo, um objeto conta bancária tem um atributo
balanço que representa a quantidade de dinheiro na conta. Cada objeto conta
bancária sabe o saldo na conta que ela representa, mas não os saldos de
outras contas no banco. Os atributos são especificados pelas variáveis da
classe de instância.
ENCAPSULAMENTO
Encapsular classes, atributos e métodos em objetos – os atributos de
um objeto e métodos estão intimamente relacionados. Os objetos podem
HTTP://erinaldosn.wordpress.com
3
comunicar-se uns com os outros, mas eles normalmente não permitem saber
como são implementados – os detalhes de implementação são ocultados
dentro dos próprios objetos. Esta ocultação de informações é crucial para boa
engenharia de software.
HERANÇA
Uma nova classe de objetos pode ser criada de forma rápida e
convenientemente por herança – a nova classe absorve as características de
uma classe existente, possivelmente personalizando-as e adicionando
características únicas da sua própria. Na analogia do carro, um objeto da
classe "conversível" certamente é um objeto da classe mais geral "automóvel",
mas mais especificamente, o teto pode ser levantado ou abaixado.
ANÁLISE ORIENTADA A OBJETOS E PROJETO
Para criar as melhores soluções, você deve seguir um processo de
análise detalhado para determinar as necessidades do seu projeto, ou seja,
definir o que o sistema deve fazer, e desenvolver um projeto que satisfaça, ou
decidir como o sistema deve fazê-lo. Idealmente, você passa por esse
processo e revisa cuidadosamente o projeto (ter seu projeto revisado por
outros profissionais de softwares) antes de escrever qualquer código. Se este
processo envolve analise e projeto seu sistema de um ponto de vista orientado
a objetos, ele é chamado de análise e processo orientado a objeto (APOO).
LINGUAGEM DE MODELAGEM UNIFICADA
Existem muitos processos APOO diferentes, mas uma única
linguagem gráfica, conhecida como a Unified Modeling Language (UML), para
a modelagem de sistemas orientados a objeto.
CLASSE
A classe é a construção lógica que define a forma e a natureza de um
objeto. Constitui a base para programação orientada a objetos em Java.
Qualquer conceito que se deseja implementar em um programa Java deve ser
encapsulado em uma classe.
Talvez a coisa mais importante para entender sobre uma classe é que
define um novo tipo de dado. Uma vez definido, este novo tipo pode ser usado
para criar objetos desse tipo. Assim, uma classe é um modelo para um objeto e
um objeto é uma instância de uma classe.
HTTP://erinaldosn.wordpress.com
4
Declarar uma Classe
Quando você define uma classe, você declara sua forma exata e
natureza. Você faz isso especificando os dados que ela contém e o código que
opera sobre os dados.
Em UML, cada classe é modelada em um diagrama de classes como
um retângulo com três compartimentos. O compartimento superior contém o
nome da classe. O compartimento do meio contém os atributos da classe, que
correspondem a variáveis de instância em Java. O compartimento inferior
contém operações da classe, que correspondem aos métodos em Java.
A classe é declarada pelo uso da palavra-chave class. Os dados
definidos dentro de uma classe são chamados de variáveis de instância. O
código está contido dentro dos métodos.
Acima está uma classe chamada Caixa que define três variáveis de
instância: largura, altura e profundidade.
Uma classe define um novo tipo de dados. Neste caso, o novo tipo de
dado é chamado Caixa. Você vai usar esse nome para declarar objetos do tipo
Caixa. Uma declaração de classe só cria um modelo, não um objeto real.
Instanciar uma Classe
Cada vez que você criar uma instância de uma classe, você cria um
objeto que contém a sua própria cópia de cada variável de instância definida
pela classe.
HTTP://erinaldosn.wordpress.com
5
Adicionar um Método a Classe
Raramente acontece de criar uma classe que contenha apenas dados.
Na maioria das vezes, você vai usar métodos para acessar as variáveis de
instância definidas pela classe.
Os métodos definem a interface para a maioria das classes. Isso
permite que o implementador da classe esconder o layout específico de
estruturas de dados internas por trás método de abstração mais limpos. Você
pode definir métodos que acessem a dados, e métodos que são usados
internamente pela própria classe.
As operações dos modelos UML lista o nome da operação precedida
de um modificador de acesso e seguido por um conjunto de parênteses. A
classe Caixa tem um método, volume. O método volume não exige
informações adicionais para executar suas tarefas, de modo que os parênteses
após o nome do método no diagrama de classe estão vazios.
Vamos adicionar o método volume a classe Caixa. Uma vez que o
volume de uma caixa é dependente do tamanho da caixa, faz sentido ter seu
cálculo na classe Caixa.
HTTP://erinaldosn.wordpress.com
6
Retornar um Valor
Embora a implementação de volume() faça o cálculo do volume de uma
caixa dentro da classe Caixa, onde ele pertence, não é a melhor maneira de
fazê-lo.
Imagine que outra parte do programa queira saber o volume de uma
caixa, mas não mostrar o seu valor. A melhor forma de implementar volume() é
calcular o volume da caixa e retornar o resultado para o chamador.
HTTP://erinaldosn.wordpress.com
7
Adicionar um Método que Usa Parâmetros
Enquanto alguns métodos não precisam de parâmetros, a maioria
precisa. Parâmetros permitem que um método seja generalizado. Isto é, um
método parametrizado pode operar uma variedade de dados e/ou ser utilizado
em um número de situações diferentes.
Em programas Java bem escritos variáveis de instância devem ser
acessadas apenas através de métodos definidos por sua classe. No futuro,
você pode alterar o comportamento de um método, mas você não precisa
alterar o comportamento de uma variável de instância exposta.
Uma melhor abordagem para definir as dimensões de uma caixa é criar
um método que usa as dimensões de uma caixa em seus parâmetros e define
cada variável de instância de forma adequada.
HTTP://erinaldosn.wordpress.com
8
O diagrama de classes UML modela a classe Caixa. Esta classe
contém as operações volume e setDimensao, que têm três parâmetros. Nos
modelos UML lista o nome do parâmetro, seguido por dois pontos e o tipo de
parâmetro entre parênteses após o nome da operação. A UML tem seus
próprios tipos de dados semelhantes aos do Java.
HTTP://erinaldosn.wordpress.com
9
EXERCÍCIOS
1. Distinga a abordagem de programação procedural e orientada a objeto.
2. Discuta a validade da seguinte afirmação: A abordagem de programação
orientada a objeto é ideal para simular problemas do mundo real.
3. Considere os seguintes cenários e delinie os objetos e suas interações em
termos de mensagens (métodos) e argumentos:
a) um motorista dirigindo um carro;
b) um cliente sacando dinheiro de um caixa automático;
c) um cliente que comprando um CD player de um fornecedor;
d) um guarda de trânsito orientando o tráfego em um cruzamento;
e) um professor entregando a lição para uma turma de alunos;
f) uma discussão tutorial entre professor e alunos.
4. Distinguir os termos "objeto" e "classe".
5. Considere o cenário de compra de flores de um florista. Delinie os objetos
em uma operação deste tipo, juntamente com as mensagens trocadas
(métodos e parâmetros).
6. Dado a definição da classe retângulo abaixo, descreva a estrutura de todas
as 3 instâncias de Retangulo.
classe Retangulo {
Atributos:
comprimento
largura
Métodos:
obterComprimento() {
retorna comprimento
}
obterLargura() {
retorna largura
}
}
7. Defina usando a seguinte estrutura uma definição de classe para carros.
Um carro geralmente tem capacidade para iniciar, avançar, retroceder,
parar e desligar. Um carro também pode retornar à sua posição relativa. O
local de partida é um valor 0.
8. Crie um método sem parâmetro que retorne o quadrado de um número
digitado.
9. Crie um método que receba como parâmetro um número e retorne o seu
quadrado.
10. Defina uma classe Quadrado, com o comprimento de seu lado como uma
variável de instância. Inclua um método construtor apropriado e métodos
para aumentar uma instância, bem como calcular a sua área.
HTTP://erinaldosn.wordpress.com
10
11. Use a classe Quadrado acima, crie dez quadrados de tamanhos aleatorios
e encontre a soma de suas áreas. (O método Math.random() retorna um
número aleatório entre 0,0 e 1,0 a cada vez que for chamado.)
12. Crie uma classe que tenha um método que recebe como parâmetro o nome
de uma disciplina e exiba-o na tela.
REFERÊNCIA BIBLIOGRÁFICA
DEITEL, Paul; DEITEL, Harvey. Java for programmers. 2nd ed. Boston:
Pearson Education, 2012 p. 39-47.
SCHILDT, Herbert. Java: The Complete Reference. 7th ed. US: McGraw-Hill,
2007 p. 105-117.
POO, Dany; KIONG, Derek; ASHOK, Swarnalatha. Object-Oriented
Programming and Java. 2nd ed. London: Springer, 2008 p. 1-36.
HTTP://erinaldosn.wordpress.com
Download