Você está na página 1de 56

PROGRAMAO ORIENTADA A OBJETOS

INTRODUO E ESTUDO A LINGUAGEM ORIENTADA A OBJETO


AUTOR: EDUARDO LUIZ BACHAREL EM CINCIA DA COMPUTAO PELA PONTIFCIA UNIVERSIDADE CATLICA DE MINAS GERAIS

DEFINIES INICIAIS

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.

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.

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 6 sua classe A.

DEFINIES INICIAIS

Uma classe pode estar visvel apenas para seus


membros derivados.

Assim a classe est protegida. Isso normalmente ocorre quando a classe


abstrata...

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 8 e atributos de pessoa.

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

PROGRAMAO ORIENTADA A OBJETOS


Linguagens Orientadas a Objetos:

JAVA

C#
C++ Visual Basic PHP Entre outros.

15

PROGRAMAO ORIENTADA A OBJETOS INCIO


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

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

PROGRAMAO ORIENTADA A OBJETOS INCIO

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 CLASSES

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 CONSTRUTOR


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 ATRIBUTOS


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:
No obrigatrio atribuir valores aos atributos

Se no for colocado se o atributo pblico ou protegido, por padro ele privado

29

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 34 ou se retorna nada (void) ou se retorna um tipo conhecido.

PROGRAMAO ORIENTADA A OBJETOS MTODOS


Implementando Mtodos:
Se retornar algo
Nome do Mtodo Mtodo com parmetro

Mesmos tipos 35 devem ser retornados

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:
Mesmo atributo

37

PROGRAMAO ORIENTADA A OBJETOS MTODOS


Ainda assim atributos declarados dentro de mtodos no so
visveis para outros mtodos:

Erro de compilao porque a altura declarada no mtodo AlturaA no acessvel para AlturaB

38

PROGRAMAO ORIENTADA A OBJETOS MTODOS E ATRIBUTOS


Assim fica claro se quisermos colocar que o atributo
pblico, privado ou protegido dentro do mtodo se tem erro de compilao:

Erro

39

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:
Atributo da classe Pessoa

Atributo do 40 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:

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. No42 obrigatrio que o nome do mtodo tenha set.

PROGRAMAO ORIENTADA A OBJETOS ACESSOS ENTRE CLASSES


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(); } }

Agora o atributo nomeDaPessoa tem o valor empresa S.A.

46

PROGRAMAO ORIENTADA A OBJETOS MAIN


O main em JAVA declarado da seguinte forma:
public static void main (String[] args) {

Qualquer nome aqui

47

PROGRAMAO ORIENTADA A OBJETOS SISTEMA


Para imprimir valores na tela em JAVA: System.out.print (\nAltura: + altura);
Nome da varivel

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


Nome da varivel

48

PROGRAMAO ORIENTADA A OBJETOS SISTEMA


Para imprimir valores na tela em C++: cout << "Nome : " << Nome << "\n";
Nome da varivel

scanf em C++:
cin >> opcao;
Nome da varivel
49

PROGRAMAO ORIENTADA A OBJETOS STRINGS


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

ANEXOS
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

Fim

56

Você também pode gostar