Linguagem de programação Programação Orientada a ?· Linguagem de programação Programação Orientada…

  • View
    215

  • Download
    0

Embed Size (px)

Transcript

  • Linguagem de programaoProgramao Orientada a objetos

    Professor: Saulo Henrique Cabral Silva

    Instituto Federal de Minas GeraisCampus Ponte Nova

  • Paradigma da orientao a objetos

    Paradigma = forma de abordar um problema. Paradigma orientado a objetos ???

    O paradigma de orientao a objetos foi formulado j halguns bons anos atrs. analogia biolgica

    Sistema deve funcionar como

    um ser vivo.

    2

  • Paradigma da orientao a objetos (5 mandamentos)

    Qualquer coisa um objeto.

    Objetos realizam tarefas atravs da requisio de servios aoutros objetos para realizar uma determinada tarefa.

    Cada objeto pertence a uma determinada classe. Uma classe agrupa objetos similares.

    A classe um repositrio para

    comportamento associado ao objeto.

    Classes so organizadas em hierarquias.

    3

  • Resumindo o que vamos aprender...

    4

  • CLASSES

    5

  • Classes e objetos

    O mundo real formado de coisas (pessoa, quadro, computador,fornecedor, animal ...). Toda coisa do mundo real chamada de objeto na modelagem orientada

    a objetos.

    Nos seres humanos ainda costumamos agrupar os objetos. Esse processo de agrupar coisas reduz a complexidade de interpretar e

    abstrair tantas opes que existem atualmente. Ex: muito mais fcil se lembrar o que um cavalo (ideia/molde).

    Uma classe a ideia geral ( o molde). A classe: Contem a descrio dos atributos e servios(aes)

    comuns a um grupo de objetos. Dizemos que um objeto uma instancia de uma classe.

    6

  • Contextualizando

    Vem a mente um objeto (animal): 4 patas

    Crina

    Cauda

    ...

    importante sempre lembrar que uma

    classe uma representao abstrata de

    coisas do mundo real. Coisas do mundo real so muito complexas para que todas as suas

    caractersticas sejam representadas em uma classe.

    Para cada problema posso ter atributos mais ou menos relevantes...

    7

  • Declarando uma Classe em Java

    public class Cavalo {//atributos

    //construtores

    //encapsulamento

    //comportamento}

    8

  • ATRIBUTOS

    9

  • Atributos

    Cor

    Altura

    Peso

    Nmero de dentes

    Quantidade de patas

    10

  • Atributos de uma Classe em Java

    public class Cavalo {//atributos

    //construtores

    //encapsulamento

    //comportamento}

    11

  • Atributos de uma Classe em Java

    public class Cavalo {

    private String cor;private int idade;private double peso;private int numPatas;private String raca;

    //construtores

    //encapsulamento

    //comportamento}

    12

  • CONSTRUTORES

    13

  • Construtores

    So os responsveis por duas funes essenciais dentro daprogramao orientada a objetos: Constroem (instanciam) os objetos, que so instncias das classes.

    Inicializam todos os atributos.

    Temos aqui um cuidado especial com atributos que tambm possam ter anecessidade de serem inicializados atravs de outro construtor...

    Construtores que veremos frequentemente de

    agora em diante... default

    Variveis

    14

  • Construtores cdigo

    public class Cavalo {private String cor;private int idade;private double peso;private String numPatas;private String raca;

    public Cavalo() { }

    public Cavalo( String cor_, int idade_ ) {this.cor = cor_;this.idade = idade_;

    }}

    15

    h

    Peso

  • Objetos

    Um objeto a instncia de uma classe.

    Um objeto possui um espao de memria...

    A classe a frma e o objeto o produto dessa frma.

    Como criar um objeto ? Chame os construtores.

    16

    Classe Objeto

  • Criao de objetos

    public static void main (String [] args) {

    Cavalo c1 = new Cavalo();

    Cavalo c2 = new Cavalo(preto,12);

    Cavalo c3 = new Cavalo(Cinza,9);

    }

    17

  • Mtodos

    18

  • 19

  • Anlise do estudo de caso... (Mtodos/aes)

    Os pedais ocultam as complexidades do funcionamento domotorista: O pedal do acelerador oculta toda a complexidade

    para aumentar a velocidade do carro.

    O pedal do freio oculta a complexidade para

    diminuir a velocidade do carro.

    O volante oculta a complexidade dos mecanismos

    para mudar a direo do carro.

    20

  • Encapsulamento

    O objetivo aqui isolar a classe, e controlar acessos mesma. Boa prtica de programao em deixar os atributos de uma classe restritos a

    ela.

    Dizemos que ocultamos os tributos da classe.

    Para acessar os atributos de uma classe utiliza-se os mtodos get e set.

    21

    var1

    var2

    var3

    GetsSets

    Classe

  • Mtodos Sets Gets

    public class Cavalo {

    private String cor;

    private int idade;

    public void setCor (String cor_){

    this.cor = cor_;

    }

    public String getCor ( ){

    return this.cor;

    }

    public void setIdade ( int idade_){

    this.idade = idade_;

    }

    }

  • Mtodos especficos / habilidades

    So mtodos que denotam um comportamento/habilidade de cadaClasse.

    A implementao destes mtodos segue a mesma sintaxe especificada naaula referente a mtodos.

    Mtodos de classe possuem acesso aos atributos das

    mesmas. Acesso

    Modificao de valor

    23

  • Codificando mtodos de classes

    public class Cavalo {

    //... variveis

    //... construtores

    public void correr( ){

    // ...

    // faa algo...

    // ...

    }

    }

    24

  • Chamando - usando as habilidades de cada Objeto

    public static void main (String [] args) {

    Cavalo c1 = new Cavalo();

    Cavalo c2 = new Cavalo(preto,12);

    Cavalo c3 = new Cavalo(Cinza,9);

    c1.correr();

    c2.correr();

    }

    25

  • Comecemos com um estudo de caso...

    Implemente um sistema para um supermercado no qual:

    Voc vai receber do cliente um arquivo em que o mesmo contm aespecificao com o cdigo, nome e preo de todos os produtos que soofertados pelo supermercado.

    O programa deve receber todos os produtos que o usurio comprou.

    Deve realizar a soma dessa compra.

    A lista de produtos comprados pelo cliente deve ser apresentada logo aps osomatrio do preo de todos os produtos .

    A opo de remover um item ou acrescentar

    um novo a lista deve estar disponvel .

    Aps passar todos os valores, o sistema deve

    calcular o troco, com base no valor

    que o cliente repassou para o caixa.

    26

  • HERANA

    27

  • Herana

    Herana uma forma de reutilizao de software em que uma novaclasse criada absorvendo membros de uma classe.

    Estamos em busca do aprimoramento, novas capacidades oumodificadas.

    Com isso ganhamos: Tempo;

    E reuso de cdigo testado;

    Ao criar uma classe, em vez de declarar

    membros completamente novos, podemos

    herdar membros de uma classe j existente.

    28

  • Herana - cdigo

    public class Animal {

    private String nome;

    private double altura;

    public Animal ( ){ }

    public Animal (String nome_, double altura_){

    this.nome = nome_;

    this.altura = altura_;

    }

    }29

  • Herana - cdigo

    public class Cavalo extends Animal{private String cor;private int idade;private double peso;private String numPatas;private String raca;public Cavalo() {

    super( );}

    public Cavalo(String cor_, int idade_,String nome_,String alt_ ) {super( nome_, alt_);this.cor = cor_;this.idade = idade_;...

    }} 30

  • POLIMORFISMO

    31

  • Polimorfismo

    O polimorfismo permite escrever programas que processam objetos quecompartilham uma mesma classe.

    Com o polimorfismo podemos projetar e implementar sistemas que sofacilmente extensveis. Novas classes podem ser adicionadas com pouca ou nenhuma modificao.

    As nicas partes de um programa que devem ser alteradas para acomodar as novasclasses so aquelas que exigem conhecimento direto das mesmas que acabaram de seradicionadas a hierarquia.

    321 m 3 m 10 m

  • Polimorfismo - cdigo

    Implementamos o mtodo mover na super classe Animal.

    Sobrescrevemos esse mtodo (mover) em cada uma das subclasses(especializaes).

    O ato de: sobrescrever o polimorfismo.

    Vector animais = new Vector ( );

    //adio de alguns animais nesse vetor dinmico (subclasses)

    for ( int i = 0 ; i < animais.size(); i++ ){

    animais.get(i).correr();

    } 33

  • CLASSES ENUMERATES (ENUM)

    34

  • Classes Enumerates

    um tipo especial de classe que introduzida pela palavra-chave ENUM.

    Essa classe especial, contm uma lista de constantes de enumeraoseparadas por vrgula. Cada identificador em uma classe ENUM deve ser nico.

    As instncias (Objetos) dos tipos enum so criadas e nomeadas juntocom a declarao da classe, sendo fixas e imutveis

    No permitido criar novas instncias com a palavra new.

    Construtor private

    As instncias so declaradas todas com letras MAISCULAS;

    35

  • Exemplo Classes Enumeratespublic enum DiaSemana {

    DOMINGO(0), SEGUNDA(1), TERCA(2),

    QUARTA(3), QUINTA(4), SEXTA(5), SABADO(6);

    private valorDia;

    private DiaSemana( int valor) {

    this.valorDia = valor;

    }

    public void getValorDia() {

    return this.valorDia;

    }

    } 36

  • CLASSES ABSTRATAS

    37

  • Classes abstratas (interfaces)

    Fornecer uma superclasse apropriada a partir da qual outrasclasses podem herdar e assim podem compartilhar umdesign comum.