Académique Documents
Professionnel Documents
Culture Documents
Vanessa Braganholo
vanessa@ic.uff.br
Paradigma estruturado
} Cdigo mais fcil de ler, mas ainda difcil para sistemas
grandes devido a repetio de cdigo
} S usa sequncia, repetio e deciso
} O que fazer se for necessrio repetir uma sequncia de
linhas de cdigo em diferentes locais?
2
Encapsulamento
} Mecanismo utilizado para lidar com o aumento de
complexidade
} Consiste em exibir o que pode ser feito sem informar
como feito
} Permite que a granularidade de abstrao do sistema seja
alterada, criando estruturas mais abstratas
3
Paradigma
procedimental
} Sinnimo: paradigma
procedural
} Uso de subprogramao
} Agrupamento de cdigo permitindo a criao de aes
complexas
} Atribuio de um nome para essas aes complexas
} Chamada a essas aes complexas de qualquer ponto do
programa
} Em Java, essas aes complexas so denominadas
mtodos
} Outras linguagens usam termos como procedimento, sub-
rotina e funo
4
A linha que imprime a
mensagem e pedindo
Exemplo para entrar com
dados, e a outra que
l os dados se repete
em dois locais. So
import java.util.Scanner; Parecidas!
public class IMC {
public static void main(String[] args) {
Scanner teclado = new Scanner(System.in);
5
Exemplo usando mtodo
import java.util.Scanner;
public class IMC { Notem a
public static double leia(String mensagem) { Declarao
Scanner teclado = new Scanner(System.in); do mtodo
System.out.print(mensagem);
return teclado.nextDouble();
}
6
Dividir para conquistar
} Antes: um programa gigante
Programa Principal
7
Fluxo de execuo
} O programa tem incio em um mtodo principal (no caso
do Java o mtodo main)
} O mtodo principal chama outros mtodos
} Estes mtodos podem chamar outros mtodos,
sucessivamente
} Ao fim da execuo de um mtodo, o programa retorna
para a instruo seguinte da chamada ao mtodo
9
Fluxo de execuo
} equivalente ao que acontece quando chamamos um
mtodo predefinido do Java
10
Vantagens
} Economia de cdigo
} Quanto mais repetio, mais economia
} Facilidade na correo de defeitos
} Corrigir o defeito em um nico local
} Legibilidade do cdigo
} Podemos dar nomes mais intuitivos a blocos de cdigo
} como se crissemos nossos prprios comandos
} Melhor tratamento de complexidade
} Estratgia de dividir para conquistar nos permite lidar
melhor com a complexidade de programas grandes
} Abordagem top-down ajuda a pensar!
11
O tipo de retorno
Sintaxe de um mtodo do mtodo pode
O nome do mtodo
segue a Mesma
ser Qualquer tipo regra de nome de
Vamos usar esses da linguagem varivel
modificadores por enquanto
public static
Os argumentos seguem a
Void Significa que no Mesma regra de declarao
tem retorno de variveis, separando cada
argumento por vrgula
12
Acesso a variveis
} Um mtodo no consegue acessar as variveis de outros
mtodos
} Cada mtodo pode criar as suas prprias variveis locais
} Os parmetros para a execuo de um mtodo devem ser
definidos como argumentos do mtodo
} Passagem por valor
} Java copiar o valor de cada argumento para a respectiva
varivel
} Os nomes das variveis podem ser diferentes
z = calcula(a, b);
13
Exemplo
15
Mtodos sem argumentos
} No necessrio ter argumentos nos mtodos
} Nestes casos, obrigatrio ter () depois do nome do mtodo
} A chamada ao mtodo tambm precisa conter ()
} Exemplo de declarao:
public static void pulaLinha() {
System.out.println();
}
} Exemplo de chamada:
pulaLinha();
16
Paradigma orientado a objetos (OO)
} Classes de objetos
} Agrupamento de mtodos afins
} Pacotes de classes
} Agrupamento de classes afins
} Representam bibliotecas de apoio
17
Classes x Objetos
} Uma classe como se fosse uma frma, capaz de
produzir (instanciar) objetos com caractersticas distintas
Fusca
Civic Gol
Classe
Carro
TR4 Uno
18
Objetos
} Definio
} Um objeto a representao computacional de um
elemento ou processo do mundo real
} Cada objeto possui suas caractersticas e seu
comportamento
} Exemplos de Objetos
cadeira mesa caneta lpis
carro piloto venda mercadoria
cliente aula programa computador
aluno avio
19
Caractersticas de Objetos
} Definio
} Uma caracterstica descreve uma propriedade de um objeto,
ou seja, algum elemento que descreva o objeto.
} Cada caracterstica chamada de atributo do objeto
20
Comportamento de Objetos
} Definio
} Um comportamento representa uma ao ou resposta de um
objeto a uma ao do mundo real
} Cada comportamento chamado de mtodo do objeto
21
Mapeamento de Objetos
Caractersticas Atributos
Comportamento Mtodos
22
Encapsulamento
} Atributos e Mtodos
} Os mtodos formam uma cerca em torno dos atributos
} Os atributos no devem ser manipulados diretamente
} Os atributos somente devem ser alterados ou consultados
atravs dos mtodos do objeto
23
Chamada de mtodos
} Colaborao
} Um programa OO um conjunto de objetos que colaboram
entre si para a soluo de um problema
} Objetos colaboram atravs de chamadas de mtodos uns dos
outros
Freia()
Carro
Motorista
24
Classes
} A classe descreve as caractersticas e comportamento de
um conjunto de objetos
} Em Java, cada objeto pertence a uma nica classe
} O objeto possuir os atributos e mtodos definidos na classe
} O objeto chamado de instncia de sua classe
} A classe o bloco bsico para a construo de programas OO
25
Exemplo de Classe
public class Carro {
Atributos (caractersticas) so
private int velocidade; variveis globais acessveis
por todos os mtodos da
public void acelera() { classe. No exemplo, existe um
atributo velocidade
velocidade++;
}
Mtodos (comportamentos):
public void freia() { acelera e freia
velocidade--;
}
}
26
Classe & Objetos
Carro
Velocidade
Cor
Cor Lateral
Freia
Acelera
Vira para direita
Vira para esquerda
27
Criao de objetos
} A classe responsvel pela criao de seus objetos via
mtodo construtor
} Mesmo nome da classe
} Sem tipo de retorno
28
Criao de objetos
} Objetos devem ser instanciados antes de utilizados
} O comando new instancia um objeto, chama o seu construtor
} Exemplo:
29
Criao de objetos
} Valor null:
} Utilizado para representar um objeto no inicializado
} Quando um mtodo retorna um objeto, ele pode retornar null
para indicar, por exemplo, que o objeto no foi encontrado
} possvel atribuir null para descartar um objeto previamente
instanciado
} Exemplo:
30
Herana
} Classes so organizadas em estruturas hierrquicas
} Uma classe pode herdar caractersticas e
comportamento de outras classes
} A classe que forneceu os elementos herdados chamada de
superclasse
} A classe herdeira chamada de subclasse
} A subclasse herda os mtodos e atributos de suas
superclasses
} A subclasse pode definir novos atributos e mtodos
especficos
31
Exemplo de Herana
Veculo
32
Exemplo de herana
} Declarao:
public class CarroInteligente extends Carro {
public void estaciona() {
// cdigo mgico para estacionar sozinho
}
}
} Uso:
CarroInteligente tiguan = new CarroInteligente(10);
for (int i = 10; i > 0; i--) {
tiguan.freia();
}
tiguan.estaciona();
33
Pacotes
} Utilizados para agregar classes relacionadas
} O pacote de uma classe indicado na primeira linha da
classe
} Declarao package
} Se uma classe no declara seu pacote, o interpretador
assume que a classe pertence a um pacote default
package br.uff.ic.prog1;
34
Pacotes
} Modificadores permitem que determinadas classes sejam
visveis apenas para outras classes do mesmo pacote
35
Pacotes
} Sempre que for usar uma classe de outro pacote, necessrio
importar
} A importao se realiza atravs da palavra-chave import,
seguida do nome da classe desejada
} As importaes so apresentadas antes da declarao da
classe mas depois da declarao do pacote
package br.uff.ic.prog1;
import java.util.Scanner;
36
Regra de ouro para classes e pacotes
} Classes devem ser mapeadas em arquivos com o mesmo
nome
} Classe Fisica
} Arquivo Fisica.java
} Pacotes devem ser mapeados em diretrios
} Pacote br.uff.ic.prog1
} Diretrio br\uff\ic\prog1
} Se o nome completo da classe br.uff.ic.prog1.Fisica
} Deve haver br\uff\ic\prog1\Fisica.java
37
Retornando aos mtodos
} Modificadores
} Estamos at agora usando somente public static
} O que significam esses modificadores?
} Quais outros modificadores existem?
} Passagem de parmetros
} O que acontece quando passamos objetos nos argumentos de
um mtodo?
38
Modificador de visibilidade
} Indica quem pode acessar o mtodo (atributo ou classe):
} O modificador private indica que o mtodo pode ser
chamado apenas por outros mtodos da prpria classe
} A ausncia de modificador conhecida como package, e
indica que o mtodo pode ser chamado somente por classes
do mesmo pacote
} O modificador protected indica que o mtodo pode ser
chamado somente por classes do mesmo pacote ou subclasses;
} O modificador public indica que o mtodo pode ser chamado
por qualquer outra classe
39
Modificador de escopo
} Indica a quem pertence o mtodo
} Ao objeto (instncia)
} classe como um todo
40
Passagem por valor vs.
passagem por referncia
} Algumas linguagens permitem passagem de argumentos
por referncia (Pascal, por exemplo)
} No o caso de Java, que sempre faz passagem por valor
} Diferenas
} Passagem por valor = cpia dos valores para outra posio de
memria
} Passagem por referncia = reuso da mesma posio de
memria
} Quando passado um objeto por valor...
} Mudanas nos atributos dos objetos so vistas de fora
} Instanciaes de novos objetos nas variveis no so vistas de
fora
41
Exerccio
} Faa um programa que, dado uma figura geomtrica que pode
ser uma circunferncia, tringulo ou retngulo, calcule a rea e
o permetro da figura
} O programa deve primeiro perguntar qual o tipo da figura:
} (1) circunferncia
} (2) tringulo
} (3) retngulo
} Dependendo do tipo de figura, ler o (1) tamanho do raio da
circunferncia; (2) tamanho de cada um dos lados do tringulo;
(3) tamanho dos dois lados retngulo
} Usar uma classe Figura, e uma classe para cada tipo de figura,
que herda de Figura
} Onde os mtodos calculaArea() e calculaPerimetro() devem
estar definidos?
42
Referncias
} Slides de Leonardo Murta
43
Subprogramao
Vanessa Braganholo
vanessa@ic.uff.br