You are on page 1of 56

PROGRAMAO ORIENTADA A

OBJETOS
1
INTRODUO E ESTUDO A
LINGUAGEM ORIENTADA A
OBJETO
AUTOR: EDUARDO LUIZ BACHAREL EM CINCIA DA COMPUTAO PELA
PONTIFCIA UNIVERSIDADE CATLICA DE MINAS GERAIS
2
Todo objeto (algo manipulvel) um entidade
Uma entidade algo concreto (jamais um verbo) que possui:
Comportamento e
Atributos
Como exemplo: uma entidade Autor possui comportamento
(sempre verbos) de produzir algo e tem como atributos
nome, sobrenome e etc., ou seja, algo que o torne nico.
3
DEFINIES INICIAIS

Uma entidade representada em POO
(Programao Orientado a Objetos) por uma
classe.
Uma classe instanciada (declarada) se torna um
objeto.
Comportamentos representado em POO por
mtodos (ou funes).
4
DEFINIES INICIAIS

Uma classe pode ser encapsulada para outras
classes, ou seja, ela pode ser escondida, assim
como os mtodos e atributos tambm.
Encapsular quer dizer deixar a classe, atributo ou
mtodo privado.

5
DEFINIES INICIAIS

Uma classe pode estar visvel para as outras
classes, assim como mtodos e atributos para
uma mesma classe e ou para outras classes
Para isso a classe, atributo ou mtodo deve ser
pblica.
Como exemplo temos o atributo nome que
pblico naquela classe A, com isso uma classe B
ou C pode acessar e alterar esse atributo dentro de
sua classe A.
6
DEFINIES INICIAIS

Uma classe pode estar visvel apenas para seus
membros derivados.
Assim a classe est protegida.
Isso normalmente ocorre quando a classe
abstrata...

7
DEFINIES INICIAIS

Uma classe abstrata significa que ela apenas um
modelo que as classes que a herdarem devem
seguir.
Como exemplo temos uma classe abstrata Pessoa,
no possvel instanciar uma classe abstrata,
portanto classes concretas (que podem ser
instanciadas) chamada uma de Pessoa Fsica e
outra de Pessoa Jurdica herdar todos os mtodos
e atributos de pessoa.

8
DEFINIES INICIAIS

Especializao em POO quer dizer termos um
grande nmero de entidades e procurarmos filtrar
apenas atributos e mtodos que sejam
obrigatoriamente comuns entre eles.
como exemplo temos um supermercado que
possui vrios produtos (vrias entidades), a misso
enxergar o que h de comum entre eles, assim
todos tm cdigo de barras, peso, entre outros.


9
DEFINIES INICIAIS

Generalizao em POO quer dizer fazer o caminho
contrrio ao de especializao, temos uma ou mais
classes que devem ser derivadas em outras com mais
atributos e mtodos que o deixem nico.
como exemplo temos um produto abstrato (ou
especializado), iremos deriv-lo em uma outra entidade
que herde suas caractersticas, mas esta entidade ser
de carnes, ou seja, agora temos que incorporar
atributos como carne de que animal, qual parte do
animal, data de validades, entre outros.

10
DEFINIES INICIAIS

Temos tambm em POO a interface, na interface
apenas se declaram mtodos e atributos (sem
valores) que devem ser implementados por classes
que assim trabalharem com ela.
Interface serve como uma certeza de que um certo
nmero de classes sempre deve realizar os
comportamentos daquela interface corrente.

11
DEFINIES INICIAIS

Poliformismo (poli = vrias, formismo: formas) a
capacidade de um objeto se comportar de
diferentes formas mesmo tendo o mesmo escopo
em sua classe.

12
DEFINIES INICIAIS

Quando instanciamos uma classe A e outra classe
B, ambas possuem os mesmos atributos e
mtodos, porm reas de memria diferentes,
portanto se uma atributo receber um nmero 1 na
classe A e este mesmo atributo receber o nmero 2
na classe B, a classe A no ter o valor de seu
atributo alterado, exceto se este atributo for
esttico.
13
DEFINIES INICIAIS

Um atributo, classe e ou mtodo esttico no pode
ser instanciado. Mas tomemos por base o exemplo
anterior: quando modificamos o atributo para dois
na classe B, a classe A tambm receber esta
modificao. Algo esttico estabelece que
estaremos trabalhando com o mesmo valor para
todos os objetos.
14
DEFINIES INICIAIS

Linguagens Orientadas a Objetos:
JAVA
C#
C++
Visual Basic
PHP
Entre outros.
15
PROGRAMAO ORIENTADA A
OBJETOS

Na criao de programa OO (orientado a objetos),
seu programa dividido em pacotes (em JAVA),
namespace (em C# e C++). Na POO um programa
extremamente hierarquizado.
Normalmente pacotes em JAVA querem dizer
pastas, assim para que classes de uma pasta A
sejam potencialmente visveis para as classes de
uma pasta B, necessrio import-los.
16
PROGRAMAO ORIENTADA A
OBJETOS
INCIO
PROGRAMAO ORIENTADA A
OBJETOS
INCIO
Importa-se no somente pacotes como tambm
bibliotecas.
Exemplo:


Na linha 1 temos a importao de um pacote em JAVA,
na linha 2 a importao da biblioteca util, aqui dizemos
que utilizaremos a coleo ArrayList no cdigo.
17
Exemplo de importao em C#:




Nas linhas 1 a 4 temos a importao recursos de
sistema da linguagem, na linha 5 a importao do
namespace PrototypePattern.
18
PROGRAMAO ORIENTADA A
OBJETOS
INCIO
Exemplo de importao em C++:

#include <iostream>
#include <iomanip>
#include <cstdio>
using namespace std;




19
PROGRAMAO ORIENTADA A
OBJETOS
INCIO
Definindo classes:

public class Pessoa { }
private class Produto { }
protected class Banco { }

As classes podem ser pblicas, privadas e ou protegidos
como vemos acima respectivamente. Dentro das chaves h
toda a lgica da classe.
20
PROGRAMAO ORIENTADA A
OBJETOS
CLASSES
Definindo classes abstratas:
public abstract class Pessoa { }
Definindo interfaces:
public interface IAviao { }
Por conveno todo nome de interface deve comear com a
letra i maiscula.
21
PROGRAMAO ORIENTADA A
OBJETOS
CLASSES
Definindo classes que implementam uma classe
abstrata ou uma interface em JAVA:
public class PessoaFisica implements Pessoa { }
Em C#:
public class PessoaFisica : Pessoa { }
E em C++:
class PessoaFisica : public Pessoa { }

22
PROGRAMAO ORIENTADA A
OBJETOS
CLASSES
Quando se instancia uma classe ela se torna um
objeto.
Exemplo:
Pessoa pessoaObjeto = new Pessoa();
Pessoa quer dizer que chamo a classe Pessoa.
pessoaObjeto o objeto que ser trabalhado
posteriormente.
new diz que queremos instanciar uma nova cpia
trabalhvel de Pessoa
Pessoa() diz que chamo o construtor da classe.

23
PROGRAMAO ORIENTADA A
OBJETOS
CLASSES
Para explicarmos o que um construtor temos uma classe
Pessoa, definir um construtor garante que sempre que essa
mesma classe for instanciada tudo que estiver dentre desse
construtor ser feito. Exemplo:

public class Pessoa
{
public Pessoa () { }
}
24
PROGRAMAO ORIENTADA A
OBJETOS
CONSTRUTOR
Ou seja:


25
PROGRAMAO ORIENTADA A
OBJETOS
CONSTRUTOR
No exemplo anterior percebemos que Pessoa() na instanciao
da classe na verdade uma chamada ao construtor, e que
sempre que instanciarmos uma classe o inteiro i receber o valor
zero.
No obrigatrio ter uma construtor, j que a prpria
compilao fica responsvel por criar uma na falta da mesma.
Mas possvel haver vrios construtores, desde que os
argumentos ou parmetros de cada um sejam distintos.
Jamais se atribui retorno para um construtor
Assim como s possvel acessar um construtor quando a
classe instanciada.


26
PROGRAMAO ORIENTADA A
OBJETOS
CONSTRUTOR
Construtores com argumentos distintos:








Neste caso para instanciar a classe Pessoa, mas chamando o construtor
da linha 14 necessrio passar o tipo que ele pede, como abaixo:

Pessoa pessoa = new Pessoa (c);




27
PROGRAMAO ORIENTADA A
OBJETOS
CONSTRUTOR
Atributos so basicamente variveis que
caracterizam uma classe. Atributos podem ser dos
tipos:
Inteiros (int)
Decimais ou flutuantes (float)
Caracteres (char)
Cadeia de Caracteres (string em C# e String em JAVA)
Booleanos (boolean)
Entre outros.
28
PROGRAMAO ORIENTADA A
OBJETOS
ATRIBUTOS
Declarar atributos simples:

29
Se no for colocado se o
atributo pblico ou
protegido, por padro ele
privado
No
obrigatrio
atribuir
valores aos
atributos
PROGRAMAO ORIENTADA A
OBJETOS
ATRIBUTOS
Declarando atributos em C++:

class Cliente {
private:
char Nome[40];
int idade;
public:
int altura;
}
30
PROGRAMAO ORIENTADA A
OBJETOS
ATRIBUTOS
Uma das diferenas vitais em relao a atributos
entre linguagens procedurais e OO que a varivel
em OO pode ser declarada em qualquer lugar
dentro da classe e no obrigatoriamente no incio
como na procedural.
Variveis inteiras quando no se atribuiu valores
ela em linguagem procedural, normalmente
obtemos lixo, j em OO, mesmo sem atribuir valor
o atributo inteiro j vem com o valor por padro
zero.
31
PROGRAMAO ORIENTADA A
OBJETOS
ATRIBUTOS
Para declarar um atributo esttico:

private static int numero = 3;


32
PROGRAMAO ORIENTADA A
OBJETOS
ATRIBUTOS
Dizer que um atributo pblico como se este
fosse uma varivel global, mesmo assim
recomendvel que os atributos sejam, a medida do
possvel, privados ou protegidos.
Deixar um atributo privado no quer dizer que outra
classe jamais poder acessar estes dados, para
isso a classe ter este acesso atravs de mtodos.


33
PROGRAMAO ORIENTADA A
OBJETOS
ATRIBUTOS
Mtodos servem basicamente para impor
comportamentos s classes e principalmente para troca
de mensagens.
Um mtodo pode ser tambm pblico, privado ou
protegido (assim como de forma mais avanado,
abstrato).
Um mtodo tambm pode possuir um retorno para
quem o invoca.
possvel retornar inmeros valores, mas normalmente
ou se retorna nada (void) ou se retorna um tipo
conhecido.
34
PROGRAMAO ORIENTADA A
OBJETOS
ATRIBUTOS
Implementando Mtodos:

35
Se retornar algo
Nome do Mtodo
Mesmos tipos
devem ser
retornados
Mtodo com
parmetro
PROGRAMAO ORIENTADA A
OBJETOS
MTODOS
Se pode trabalhar com estruturas de selees e
repeties j conhecidas dentro de uma mtodo
como if, else, while, do-while, for, switch-case,
assim como o foreach (que parecido com o for,
porm utilizado para colees).

36
PROGRAMAO ORIENTADA A
OBJETOS
MTODOS
Se atributos e mtodos esto em uma classe pode
se fazer o seguinte:

37
Mesmo atributo
PROGRAMAO ORIENTADA A
OBJETOS
MTODOS
Ainda assim atributos declarados dentro de mtodos no so
visveis para outros mtodos:

38
Erro de
compilao
porque a altura
declarada no
mtodo AlturaA
no acessvel
para AlturaB
PROGRAMAO ORIENTADA A
OBJETOS
MTODOS
Assim fica claro se quisermos colocar que o atributo
pblico, privado ou protegido dentro do mtodo se tem erro
de compilao:


39
Erro
PROGRAMAO ORIENTADA A
OBJETOS
MTODOS E ATRIBUTOS
This utilizado quando queremos especificar que um
elemento de mesmo nome que estamos utilizando aquele
declarado na classe corrente:



40
Atributo da classe Pessoa
Atributo do
parmetro
PROGRAMAO ORIENTADA A
OBJETOS
MTODOS E ATRIBUTOS
Chama-se get e set teorias de acesso atributos
por outras classes atravs de mtodos.

get quando se deseja obter o valor daquele atributo,
assim obrigatrio que o mtodo tenha um retorno.

set quando se deseja modificar o valor daquele atributo
em sua classe, neste caso obrigatrio que o mtodo
possua parmetros.
41
PROGRAMAO ORIENTADA A
OBJETOS
MTODOS E ATRIBUTOS
Exemplo:

42
Mtodo get, retornando
o mesmo tipo do atributo
altura (float). No
obrigatrio que o nome
do mtodo tenha get.
Mtodo set, tendo como
parmetro o mesmo tipo
que ser atribudo ao
atributo altura. No
obrigatrio que o nome
do mtodo tenha set.
PROGRAMAO ORIENTADA A
OBJETOS
MTODOS E ATRIBUTOS
Acessar uma classe quer dizer basicamente
instanci-la e depois atravs de um . (ponto)
acessar seus recursos, ou seja, mtodos e
atributos possveis de acordo com sua
acessibilidade.
43
PROGRAMAO ORIENTADA A
OBJETOS
ACESSOS ENTRE CLASSES
Como exemplo temos uma classe Venda que
deseja acessar uma outra classe chamada Pessoa.
Para isso a classe Venda deve instanciar a classe
Pessoa:
public class Venda {
Pessoa pessoa = new Pessoa();
}

44
PROGRAMAO ORIENTADA A
OBJETOS
ACESSOS ENTRE CLASSES
A classe Pessoa est implementada da seguinte forma:
public class Pessoa {
String nome;
public Pessoa () { nome = empresa S.A.; }
public String getNomePessoa ()
{
return nome;
}
}

45
PROGRAMAO ORIENTADA A
OBJETOS
ACESSOS ENTRE CLASSES
Para que Venda obtenha o valor da varivel nome de Pessoa acessaremos o
mtodo getNomePessoa() da seguinte forma:
public class Venda {
Pessoa pessoa = new Pessoa();

public Venda () {
String nomeDaPessoa = pessoa.getNomePessoa();
}
}

46
Agora o atributo
nomeDaPessoa tem o valor
empresa S.A.
PROGRAMAO ORIENTADA A
OBJETOS
ACESSOS ENTRE CLASSES
O main em JAVA declarado da seguinte forma:
public static void main (String[] args)
{

}
47
Qualquer nome aqui
PROGRAMAO ORIENTADA A
OBJETOS
MAIN
Para imprimir valores na tela em JAVA:
System.out.print (\nAltura: + altura);

Para imprimir valores em C#:
Console.Write (\nAltura: + altura);


48
Nome da varivel
Nome da varivel
PROGRAMAO ORIENTADA A
OBJETOS
SISTEMA
Para imprimir valores na tela em C++:
cout << "Nome : " << Nome << "\n";


scanf em C++:
cin >> opcao;

49
Nome da varivel
Nome da varivel
PROGRAMAO ORIENTADA A
OBJETOS
SISTEMA
Strings em OO so bem diferentes, primeiro sua declarao chama
explicitamente String:
String nome = ;

Segundo quase tudo possvel transformar em string:
String num = numeroInteiro.ToString();

Comparar strings tambm diferente:
if ( nome.equals(nomeDois) ) { }

Concatenar strings:
String nome = Jos + da Silva;

50
PROGRAMAO ORIENTADA A
OBJETOS
STRINGS
possvel ver se uma string contm algo que outra string possui:
if ( nome.Contains(Silva) ) { }

possvel saber quantos caracteres possui uma string:
int numeroDeCaracteres = nome.Length();

possvel retirar todos os espaos em brancos de uma string:
nome.trim();

Assim como possvel substituir algum carcter especifico em uma string, abaixo tudo
que tiver a letra b ser substitudo por a:
nome.replace( b, a);

possvel tambm deixar todos os caracteres de uma string em letra maiscula:
nome.toUpperCase();

51
PROGRAMAO ORIENTADA A
OBJETOS
STRINGS
Exemplo de uma classe de um software (programa) que simula a
evoluo das espcies (teoria da evoluo), como parte do estudo
em Inteligncia Artificial e Computao Evolutiva:
52
ANEXOS

Exemplo de uma classe de um software (programa) que simula
um crebro artificialmente, base para a robtica:
53
ANEXOS

Exemplo de uma tela (view) de um software (programa) que
gerencia projetos, feita totalmente em linguagem C#:
54
ANEXOS

Exemplo de uma classe de um software (programa) para
Windows Phone, escrita (exclusivamente) em C#:
55
ANEXOS

Fim
56

You might also like