Você está na página 1de 57

Introduo Orientao a Objetos

Prof. Ricardo Linden

Histria das LPOO

Simula 67: Encapsulamento em uma definio de class


Smalltalk-80: Xerox PARC: Primeira linguagem verdadeiramente
orientada a objeto (Alan Kay)
C++: Primeira linguagem OO amplamente aceita (inicialmente era
apenas um pr-processador)
C++, Ada95, Modula-3, CLOS: acrescentaram orientao a objeto a
estruturas pr-existentes
Java: Modelo de objetos derivado do C++, simplificado e
melhorado

Programao OO X Procedural
A orientao a objeto muda o foco da programao dos algoritmos
para as estruturas de dados:
A organizao lgica dos dados determina a organizao do
software
O processo de design do software se concentra na organizao
dos dados e na definio das operao que a eles so aplicadas
Tipo de dados agora est embutido no conceito de classe
Mais perto da forma como
pensamos no mundo real

Conceitos Bsicos da Orientao a Objetos


Para podermos comear a nossa aula, ns primeiro precisamos
entender os seguintes conceitos bsicos:
Sub-classe
Objeto
Herana
Classe
Abstrao
Instncia
Encapsulamento
Mtodo
Polimorfismo
Mensagem

Objeto
Um pacote de software que contm uma coleo de procedimentos
e dados relacionados.
Um objeto representa um item, unidade ou entidade (real ou
abstrata) individualmente separvel com um papel bem definido
no domnio do problema.
Um objeto, como um substantivo, pode ser uma pessoa, local ou
objeto basicamente, qualquer conceito que seja aplicvel ao
projeto do sistema.

Classe
Um padro que define os mtodos e caractersticas que sero
includos em um tipo particular de objeto.
Uma classe uma definio geral dos atributos e mtodos de
um conjunto de objetos.
Exemplos: Cliente, Veculo, Conta Corrente, Documento,
Reserva
Cada uma destas classes representa uma srie de caractersticas
comuns:
dados, como placa do veculo
aes, como ligar o veculo

Instncia
Outro nome para um objeto que pertena a uma classe particular.
Quando uma aplicao est executando, objetos so instanciados
de uma classe e tornam-se ento instncias desta classe.
Exemplos
- Ticket No. 00-123961 representa um objeto (instncia) da classe
Reserva.
- Meu Fusquinha representa uma instncia da classe Veculo

Mtodo
Um procedimento/funo dentro de um objeto.
Mtodos so aes que uma classe ou objeto faz e incluem a
lgica da aplicao.
Um mtodo similar a uma funo/procedimento ou subrotina
em termos de programao estruturada.
Exemplos:
- Criar uma nova conta um mtodo da classe Conta
- Registrar para uma Matria um mtodo para a classe
Estudante

Atributos vs. Mtodos


Atributos definem os dados enquanto os mtodos definem a
funcionalidade.
Atributos so definidos por seus nomes e tipos (por exemplo,
integer, string, date).
Mtodos so definidos escrevendo o cdigo para isto (exceto
no caso de mtodos virtuais)
Atributos e mtodos so ambos encapsulados dentro dos seus
objetos correspondentes

Encapsulamento
Uma tcnica nos quais os dados esto encapsulados junto com
seus procedimentos correspondentes
Encapsulamento esconde tanto os mtodos quanto os atributos do
mundo exterior.
Visibilidade: Public, Private, Protected, e Package-level.
Private: Somente membros da classe podem acessar a propriedade/mtodo
Protected: Somente membros da classe e subclasses (classes descendentes)
podem acessar a propriedade/mtodo
Public: Todas as classes podem acessar a propriedade/mtodo
Package Level : Todos as classes do mesmo package conseguem acessar a
propriedade/mtodo
Vamos discutir mais detalhadamente mais frente

Mensagem
Um sinal que um objeto manda para outro que pede que o objeto que
recebe o sinal execute um de seus mtodos.
Como resultado do encapsulamento, mandar mensagens se torna o
mecanismo de comunicao entre objetos que interagem.
Um formato geral de mensagem tem o seguinte formato:
Object.mtodo(parmetros)
Exemplo: invoice.calcularTotal ( )

Sub-Classe
Uma classe que um caso especial de outra classe.
Sub-classe tambm conhecida como classe filha, enquanto que a
super-classe tambm chamada de classe pai ou me.
Sub-classes so especializaes das super-classes e so criadas via
herana
Exemplo:
Um pediata um caso especial de mdico
Um carro um caso especial de veculo.

Herana
Em OO existe um relacionamento Is-a entre classes
Exemplo : aluno-4o.-perodo is-a aluno is-a pessoa

Classes derivadas so chamadas de subclasses (mesmo que normalmente sejam


maiores)
Pode haver herana simples e mltiplia
Classes base abstratas:
Classes no tm instncias reais (objetos)
Subclasses tm que implementar alguns mtodos
Ex. : classe veculo_automotor com o mtodo abstrato ligar. No existem objetos
desta classe, que uma classe base abstrata. As classes carro e moto herdam as
propriedades desta classe e implementam o mtodo ligar.

Hierarquia de Classes
Classes podem ser organizadas em hierarquias de forma
que classes mais especficas herdem mtodos de classes
mais abstratas
Diagramas de hierarquia de classes
Classe: Cadeira

subclasses

Cadeira de Escritrio

Cadeira de Balano

Abstrao
o processo de capturar o comportamento essencial e
caractersticas e coloc-las de uma forma conveniente para
organizar a hierarquia de classes.
Exemplo:
Veculo (Sub-classes: Terrestre, Marinho e Areo)

Classes abstratas nunca so instanciadas


Decorrncia da sua natureza genrica
Exemplo : Nada um veculo genericamente, mas sim um veculo
terreste, marinho ou areo.

Sobrecarga
Mesmo nome, mas nmero ou tipo de parmetros diferentes.
Para sobrecarregar uma funo, basta declarar os vrios tipos que
ela pode ter.
Exemplo : classe carro, mtodo frear.
Se receber um parmetro, indica a fora que temos que aplicar no pedal.
Se no receber nenhum parmetro, indica que temos que parar o carro.

Tambm aplicvel a operadores


2 + 3 (adio inteira)

Exemplo: operador +

3.2 + 2.5 (adio real)

Polimorfismo
Esconder procedimentos alternativos por trs de uma interface comum.
Polimorfismo vem do grego e significa muitas formas.
Isto permite que se tenha uma interface comum que esconde detalhes de
implementao
Exemplo : mtodo frear.
Tem uma implementao na classe base (carro).
Tem outra implementao na classe filha (ferrari).

A funo da classe filha se sobrepe (overrides) da classe me

Polimorfismo Sobrecarga
Com polimorfismo, ns decidimos qual dos mtodos ser
usado em tempo de execuo (exemplo claro de binding
dinmico).
Com sobrecarga, podemos decidir qual dos mtodos ser
usado em tempo de compilao, distinguindo pelos
parmetros passados.
O processo de escolha da funo correta pelo compilador chamado
de resoluo de sobrecarga (overload resolution)

Programas Java
Programas Java consistem em classes, que so formadas por
atributos e mtodos que realizam tarefas e retornam informaes
quando apropriado.
Isto , para fazer seus programas Java, voc precisa desenvolver
classes que chamaro outras classes, e assim por diante.
Logo, precisamos aprender como desenvolver nossas prprias classes
em Java para que possamos implementar solues para nossos
problemas.

Programando OO em Java
O ncleo da LP pequeno, mas existem vrias bibliotecas de classes
que fornecem vrias funcionalidades adicionais para a LP.
Em Java usamos uma abordagem de blocos de construo,
reutilizando os softwares j existentes. Isto far com que:
Seus programas tenham melhor desempenho, pois normalmente as classes prprogramadas so mais otimizadas do que o seu cdigo pessoal.
Melhore a portabilidade do seu programa, pois estar usando classes e mtodos
que so includos em praticamente todas as implementaes do Java
Voc economize tempo de programao.

A Linguagem de Programao Java


Onde encontrar informao
Inventada pela Sun Microsystems
http://java.sun.com

O cdigo Java compilado para um cdigo de nvel mdio (byte code), que
independente de mquina e precisa ento ser interpretedado por um
interpretador Java.

Compilador
Java
Cdigo Fonte
Java

Arquivo Class Interpretador


Java
Executar
Executar
Java
Programa
Programa

Editando seus programas


Um arquivo fonte Java 100% texto puro.
Voc pode edit-lo usando qualquer editor de texto de sua
preferncia (notepad, vi, emacs, edit, etc).
Existem ambientes IDE, como Netbeans (escrito em Java e
gratuito para usos no comerciais), Jbuilder, Visual Caf e o
Visual J++
Os arquivos fonte devem ter extenso .java

Editando seus programas


Java uma linguagem de formato livro. Isto quer dizer que no
necessitamos de espaos em branco, identao ou pulo de linha
para que o compilador entenda nossos cdigos.
Como em qualquer linugagem, devemos programa
em Java buscando sempre o mximo de clareza
para facilitar a compreenso e a manuteno
posteriores. Assim sendo, apesar de no serem
obrigatrios, a identao, pulos de linha e
espaos em branco so altamente recomendados

Breve introduo ao Java


Vamos ver agora dois exemplos que nos permitiro ter uma idia
de como programar em Java.
Entretanto, vrios conceitos sero omitidos neste momento.
No h motivo para estresse ou para comear a pensar em destruir
seu computador - ns vamos ver tudo detalhadamente ainda neste
curso!

Primeiro Exemplo em Java


//Este o nosso primeiro exemplo em Java
public class HelloWorld
{
public static void main (String[] args)
{
System.out.println("Hello World!");
}
}

Conceitos vistos no exemplo


// So iniciadores de comentrios em uma linha (como no C++).
Em Java tambm podemos ter comentrios delimitados por /* e */,
como no C.
Os comentrios marcados por // so preferveis por poderem ser
lidos pela ferramenta javadoc, que veremos neste curso se tivermos
tempo.
No h necessidade de correr com a matria, mas h
muito para se ver em Java. Logo, quanto mais adiante
formos, mais vocs aprendero.

Conceitos vistos no exemplo


public class HelloWorld
Esta linha uma definio de classe.
Todo programa em Java consiste em uma ou mais classes definidas pelo
programador (ou pelo usurio).
A palavra chave class introduz uma definio de classe em Java e
imediatamente seguida pelo nome da classe.
Notas importantes:
O nome da classe segue um identificador
As palavras chaves em Java so palavras reservadas
Java faz diferenciao entre maisculas e minsculas (HelloWorld Helloworld)

Conceitos vistos no exemplo


public class HelloWorld
public um modificador de visibilidade
Toda classe public deve estar gravada em um arquivo cujo
nome o mesmo da classe (neste caso, HelloWorld.java)
Assim, no podemos ter duas classes public no mesmo
arquivo.
Vamos ver como contornar isto mais a frente.
Todo arquivo java deve terminar com a extenso .java

Conceitos vistos no exemplo


{}
Os blocos de comando so definidos pelas chaves, como no C e no C++
Vocs notaro muitos pontos em comum entre o Java e estas linguagens.

public static void main (String[] args)


Todo aplicativo Java deve ter um mtodo main, onde ele iniciado.
Se no tiver, o interpretador Java no executar a sua classe.
Como no C, a palavra chave void indica que o mtodo no retorna nenhum
valor.

Conceitos vistos no exemplo


public static void main (String[] args)
O public um modificador de visibilidade (faz o mtodo ser pblico).
O static diz que o mtodo pertence classe e no aos seus objetos

Vamos ver estes conceitos com


mais detalhes mais adiante!

Conceitos vistos no exemplo


System.out.println("Hello World!");
System.out o objeto de sada padro
Ele permite aos aplicativos Java escrever na janela de comando a partir do
qual o aplicativo Java executado.
O mtodo println imprime uma linha colocando um CRLF no fim.
O mtodo print faz o mesmo, s que sem o CRLF
Os caracteres de escape \n, \t, etc. que conhecamos do printf tambm valem
para o print e para o println.

Como compilar o cdigo usando JDK?


Janela MSDOS

O arquivo fonte
.java deve sempre
ter esta extenso
Executando o
compilador
Arquivo
.class
gerado

Aplicativos Java
Existem dois tipos de programas Java:
Aplicativos :
programas semelhantes a processador de textos, planilhas, etc. que
normalmente so armazenados e executados localmente.
so carregados na memria usando-se o interpretador Java.

Applets :
programas pequenos que normalmente so armazenados em um
computador ao qual o usurio se conecta remotamente via web.
So carregados e executados via appletviewer e precisam ser chamados
atravs de uma pgina html.

Como executar o cdigo?

Executando o
interpretador
Java

Sada do
programa e
trmino

Importante
O diretrio onde ficam o compilador (javac) e o interpretador (java) Java
deve ser acrescentado ao PATH do DOS
Se formos re-utilizar classes que ns mesmos criamos, devemos colocar
seus diretrios no CLASSPATH do DOS
Vamos voltar a este tema mais adiante neste curso.

As duas mudanas podem ser feitas no prprio AUTOEXEC.BAT, para que


quando o micro seja ligado, elas sejam automaticamente implementadas.
O diretrio corrente no necessariamente estar sendo buscado pelo
interpretador java. Acerte as variveis de ambiente.

Segundo exemplo
//Este o nosso segundo exemplo em Java
import javax.swing.JOptionPane;
public class HelloWorld
{
public static void main (String[] args)
{
JOptionPane.showMessageDialog(null,
"Hello World!");
System.exit(0);
}
}

Conceitos vistos neste exemplo


import javax.swing.JOptionPane;
Esta instruo serve para identificar e carregar classes requeridas para
compilar um programa java.
Existem muitas classes prontas em Java, como a classe Swing que contm
elementos que nos ajudam a definir interfaces grficas com os usurios.
Existem elementos para dilogos, botes, janelas, etc.

Se tivermos tempo, veremos tambm as interfaces


grficas ao fim deste curso. Mas no vamos correr
mais por causa disto!

Biblioteca de classes
Uma biblioteca de classes uma coleo de classes que podemos
usar quando desenvolvemos programas.
Existe uma biblioteca padro de classes Java que parte de
qualquer ambiente de desenvolvimento Java
Estas classes no so parteda linguagem Java per se, mas ns
nos baseamos bastante nelas.
As bibliotecas de classes Java
so equivalente s bibliotecas do C

Biblioteca de classes
Vrias classes que usaremos, como a System e a String so
parte da biblioteca padro de classes Java
Outras bibliotecas de classes podem ser adquiridas com
fabricantes de software ou criadas por voc mesmo.
No seja teimoso!
Desenvolver novamente classes j existentes
simplesmente tolice - causa erros e perda de
performance!

Pacotes
As classes da biblioteca padro Java so organizadas em
pacotes.
Alguns dos pacotes da biblioteca padro so:
Pacote

Propsito

java.lang
java.applet
java.awt
javax.swing
java.net
java.util

Suporte genrico
Criar applets para a web
Interfaces grficas e grficos
Capacidades e componetes grficos adicionais
Comunicao em rede
Utilidades variadas

A declarao import
Quando queremos usar uma classe de um pacote, pode usar seu
nome totalmente qualificado
java.util.Random

Outra opo importar a classe, e depois usar o nome da classe:


import java.util.Random;

Para importar todas as classes em um pacote especfico, voc


pode usar o caracter curinga *
import java.util.*;

A declarao import
Todas as classes do pacote java.lang so automaticamente
importadas em nossos programas
por isto que no precisamos de um import no primeiro
exemplo.

No necessrio estourar a cabea


tentando entender a fundo agora os
conceitos de classes e pacotes. Ns
os veremos com mais cuidado mais
a frente neste curso!

Conceitos vistos neste exemplo


System.exit(0);
Esta instruo serve para finalizar o nosso programa.
Todo programa com interface grfica precisa ser finalizado desta
forma, para que termine corretamente.
Caso no o faamos, nossa janela de comando no voltar a
funcionar corretamente.

Pergunta razovel
Se eu preciso importar um arquivo para usar a classe
JOptionPane, porque no preciso importar uma
classe para usar a classe System e seu objeto out?

Resposta
A classe System parte do pacote java.lang
Lembre-se que este pacote padro importado
automaticamente em todo programa Java

Terceiro exemplo
import javax.swing.JOptionPane;
public class Soma1 {
public static void main (String[] args)
{
int n1,n2,soma;
String s1,s2;
s1=JOptionPane.showInputDialog(Prim Num. :");
s2=JOptionPane.showInputDialog(Seg. Num. :");
n1=Integer.parseInt(s1);
n2=Integer.parseInt(s2);
soma=n1+n2;
JOptionPane.showMessageDialog(null,A soma +soma);
System.exit(0);
}
}

Conceitos vistos neste exemplo


import javax.swing.JOptionPane;
Esta instruo serve para identificar e carregar classes requeridas para
compilar um programa java, informando ao compilador onde pode encontrlas (no caso, no diretrio javax).

public class Soma1 {


Inicia as definies da classe Soma1.
Como uma classe pblica, ela deve estar em um arquivo denominado
Soma1.java
A chave indica o comeo do bloco de definies. No esquea que ela tem
que ser fechada quando este terminar.

Conceitos vistos neste exemplo


Declaraes de variveis
Como em todas as linguagens compiladas, precisamos declarar as variveis
que usamos.
Declaraes consistem do tipo da varivel, seu nome e um ponto-e-vrgula.
Se tivermos mais de uma varivel do mesmo tipo, podemos coloc-las na
mesma declarao, separadas por vrgulas.
boa prtica de programao dar para as variveis nomes descritivos da sua
verdadeira funo.

Conceitos vistos neste exemplo


int n1,n2,soma;
Estamos declarando variveis do tipo inteiro.
Existem outros tipos numricos, para armazenar nmeros racionais (float e
double).

String s1,s2;
Estamos declarando objetos da classe String.

Como dissemos antes, no vamos nos aprofundar nos


conceitos de Java neste momento. Mais a frente ns
discutiremos todos estes conceitos mais profundamente.

Conceitos vistos neste exemplo


s1=JOptionPane.showInputDialog(Prim Num. :");
Estamos usando um mtodo da classe JOptionPane que realiza uma entrada de
dados.
Este mtodo retorna uma string.

n1=Integer.parseInt(s1);
Java uma linguagem muito mais rigorosamente tipada do que o C.
No possvel realizar typecasting automtico na maioria dos casos.
Temos que chamar uma funo (no caso um mtodo da classe Integer) para
poder converte a string entrada na instruo anterior em um inteiro para
realizarmos a soma.
Existe o tipo int e a classe Integer, que
denominada uma wrapper class do
tipo. Mais frente veremos isto com
detalhes.

Quarto exemplo
import javax.swing.JOptionPane;
public class Max1 {
public static void main (String[] args)
{
int n1,n2,max;
n1=Integer.parseInt(JOptionPane.showInputDialog(Prim Num. :"));
n2=Integer.parseInt(JOptionPane.showInputDialog(Seg Num. :"));
if (n1>n2) {
max=n1;
} else {
max=n2;
}
JOptionPane.showMessageDialog(null,O mximo +max);
System.exit(0);
}
}

Conceitos vistos neste exemplo


if (n1>n2) {
O if uma statement condicional, que permite que tomemos
decises/escolhamos um curso de ao em nossos programas.
A statement if tem o seguinte formato:
if (condio) statement1 else statement2

onde:
condio uma expresso booleana (lgica)
statement1 executada se a condio avaliada como verdadeira.
statement2 executada se a condio avaliada como falsa.

A clusula else opcional


A statement1 e a statement2 podem ser substitudas
por um bloco de statements, mas neste caso no
podemos esquecer das chaves em torno deste bloco.

Quinto Exemplo
import javax.swing.JOptionPane;
public class Max1 {
public static void main (String[] args)
{
int i,soma;
i=1;
soma=0;
while (i<=10) {
soma+=Integer.parseInt(JOptionPane.showInputDialog(Num :"));
i++;
}
JOptionPane.showMessageDialog(null,A soma +soma);
System.exit(0);
}
}

Conceitos vistos neste exemplo


while (i<=10) {
Statements de repetio nos permitem repetir aes dentro de nossos
programas
Existem trs tipos de estruturas de repetio em Java
for statement
do statement
while statement

Compromisso:
Veremos todas
com cuidado
depois!

Conceitos vistos neste exemplo


O comando while permite que um statement (ou bloco de
statements) seja repetido at que uma determinada condio seja
verdadeira.
Formato geral:
while(condition){ statement(s) }

Onde:
condio uma expresso booleana
a(s) statement(s) sendo repetidas alteram o valor da condio para false em
algum momento

Comportamento do while
Na primeira vez que o loop executado, a condio avaliada. Se
ela for falsa, no se executa as statements dentro do loop nenhuma
vez.
Se for verdadeira, executam-se todas as statements do loop e voltase para o comeo para avaliar a condio novamente.
Este passo repetido at que a condio seja falsa.

Isto implica que as statements podem executar qualquer


nmero de vezes (de zero a infinito!)

Fim da aula

J temos uma boa introduo.


Melhorem-na, fazendo os exerccios!

Você também pode gostar