Hélio Engholm Jr

Especializado em Engenharia de Software

ClasseSistemaAnimalPrograme para a interface

A Engenharia de Software sugere que os sistemas sejam programados para interfaces. Isto permite a alteração de componentes do sistema sem a necessidade de alteração do restante. Estaremos vendo a utilização deste princípio com detalhes nos próximos capítulos.

A programação para interfaces permite a troca de componentes sem a necessidade de se alterar o restante do código que utiliza serviços do componente substituído.

Interface de um objeto é uma coleção de operações que ele disponibiliza e suas assinaturas (nome da operação, argumentos e tipos dos mesmos) através da prestação de serviços por interfaces.

Deste modo, as interfaces podem ser vistas como declarações de como um objeto pode ser utilizado por outros objetos, permitindo ao desenvolvedor poder pensar apenas nas interfaces de seus objetos, ou seja, na função de cada um deles e no seu relacionamento com os outros.

Exemplo de programação por interfaces

Imagine uma empresa de desenvolvimento de softwares que possui um sistema utilizado em controle de clínicas médicas de pequeno porte, com a finalidade apenas de cadastro e controle de pacientes da clínica, mantendo um histórico do cliente e informações médicas importantes. A empresa também possui o interesse de disponibilizar este mesmo sistema para clínicas de animais domésticos.

De posse destas informações, os designers e programadores do sistema resolvem utilizar a programação para interfaces com a finalidade de utilizar a mesma aplicação para tratar objetos Pessoa e Animal pelo mesmo sistema, sem a necessidade de se implementar um sistema diferente para clínicas de pessoas e clínicas veterinárias.

Observe na figura acima a representação da implementação da interface Paciente pelas classes Pessoa e Animal. Perceba que o objeto da classe relatório recebe como parâmetro do método imprimeHistoricoMedico um objeto de qualquer objeto que implemente a interface Paciente, fornecendo o serviço de imprimir o respectivo relatório médico.

Observe a seguir como ficaria a implementação deste exemplo se utilizada a linguagem Java de programação.

Este exemplo utiliza os conceitos de herança e de interface, tanto a classe Pessoa quanto a classe Animal utilizam herança para Paciente e implementam a interface PacienteI.

             Pessoa extends Paciente implements PacienteI

             Animal extends Paciente implements PacienteI

 

//INTERFAFACE PacienteI

public interface PacienteI {

            public String getHistoricoAtendimento();

            public String getHistoricoMedico();

            public String getInformacoesCadastrais();

            public String getInformacoesPaciente();

}

//CLASSE PACIENTE

public class Paciente {

            String nome=“”;

            public String getNome() { returnnome; }

            public void setNome(String nome) { this.nome = nome; }

            public void solicitaNome() {

                        try

                        {

                                    BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

                                    System.out.print(“Digite o nome:”);

                                    nome = in.readLine();

                        }

                        catch (IOException e) { e.printStackTrace();}

            }

            public String retornadados(){ return“”; }

}

 //CLASSE PESSOA

import atendimento.Ficha;

import atendimento.Historico;

import interfaces.PacienteI;

public class Pessoa extends Paciente implements PacienteI  {

            public String getHistoricoAtendimento() {

                        return “Historico ATENDIMENTO HUMANO”;

            }

            public String getHistoricoMedico() {

                        return“Historico medico HUMANO”;

            }

            public String getInformacoesCadastrais() {

                        return “Informacoes cadastrais HUMANA\nNome:” + super.nome;

            }

            public String getInformacoesPaciente() {

                        return getHistoricoMedico() + ” – “ + getInformacoesCadastrais() + ” – ” + getHistoricoAtendimento();

            }

}

//CLASSE ANIMAL

public class Animal extends Paciente implements PacienteI  {

            String raca = “”;

            public String getHistoricoAtendimento() {

                        return“Historico ATENDIMENTO ANIMAL”;

            }

            public String getHistoricoMedico() {

                        return“Historico medico NAO HUMANO”;

            }

            public String getInformacoesCadastrais() {

                        return“Informacoes cadastrais NAO HUMANA\nNome: “ + super.nome + “\nRaca:” + raca;

            }

            public String getInformacoesPaciente() {

                        return getHistoricoMedico() + ” – “ + getInformacoesCadastrais() + ” – ” + getHistoricoAtendimento();

            }

            public String solicitaNome() {

                        super.solicitaNome();

                        try

                        {

                        //JAVA exige try-catch para a entrada de dados

                        //necessário para a entrada de dados

                                    BufferedReader in =

                                    new BufferedReader(new InputStreamReader(System.in));

                                    System.out.print(“Digite a raça do animal:”);

                                    raca = in.readLine();

                                    return“”;

                        }

                        catch (IOException e) { // Catch any IO exceptions.

                                    e.printStackTrace();

                                    return e.toString();

                        }

            }

}

//PROGRAMA PARA TESTAR

public

class sistema {

publicstaticvoid main(String[] args) {

           PacienteI p = null;

           Pessoa pessoa = new Pessoa();

           pessoa.solicitaNome();

            Animal animal = new Animal();

           animal.solicitaNome();

           //FAZENDO A REFERENCIA POLIMÓRFICA p APONTAR PARA UM OBJETO TIPO PESSOA

            p = pessoa;

           System.out.println(p.getInformacoesPaciente() + “\n\n\n”);

           //FAZENDO A REFERENCIA POLIMÓRFICA p APONTAR PARA UM OBJETO TIPO aNIMAL

            p = animal;

           System.out.println(p.getInformacoesPaciente());

}

}

 

One Response so far.

  1. Pharme307 disse:

    Hello! kbdaeea interesting kbdaeea site! I’m really like it! Very, very kbdaeea good!




+ Artigos