220 likes | 343 Views
Desenvolvimento de Sistemas Orientados a Objetos. ► METODOLOGIA PARA DESENVOLVIMENTO DE SISTEMAS Prof. Dr. rer. nat. Daniel D. Abdala e-mail: abdala@das.ufsc.br. Objetivos. Introduzir o conceito de desenvolvimento de sistemas orientados a objetos;
E N D
Desenvolvimento de Sistemas Orientados a Objetos ►METODOLOGIA PARA DESENVOLVIMENTO DE SISTEMAS Prof. Dr. rer. nat. Daniel D. Abdala e-mail: abdala@das.ufsc.br
Objetivos Introduzir o conceito de desenvolvimento de sistemas orientados a objetos; Explicar como funciona o paradigma de programação orientado a objetos; Introduzir os conceitos de classes e instâncias e delinear a diferença entre ambos; Definir os elementos componentes de um objeto (atributos e comportamentos) Delinear a relação entre desenvolvimento OO e modelagem de sistemas
Plano Paradigma e Filosofia OO; Abstração; Classes vs Instâncias; Métodos; Encapsulamento.
Paradigma Orientado a Objetos • Paradigma de programação • Abstrações do mundo real interagem para atingir o objetivo do sistema • Identificam-se objetos do mundo real e abstraem-se suas características e funcionalidades para compor uma entidade computacional (Objeto)
Filosofia de Programação OO • Todo o programa é composto por objetos que implementam entidades mapeadas do mundo real • Objetos possuem: • Atributos • Comportamentos/mensagens • A execução do programa é levada a cabo por meio da interação entre objetos. • Troca de mensagens
Elementos de Um programa OO • Estrutura • Entrada do programa • Função ou Objeto de entrada (main) • Objetos • Classes • Instâncias • Funcionamento • Criação de instâncias • Troca de mensagens
Abstração • Identificar entidades do mundo real que comporão o programa • Identificar seus atributos relevantes • Identificar suas funcionalidades relevantes • Criar um protótipo ou classe que as represente
Exemplo • Abstração do objeto Cavalo • Atributos • Cor • Crina • Raça • Comportamentos • Galopar • Trotar • Saltar • .....
Exemplo • É importante notar que durante o processo de abstração: • Identificar os atributos e comportamentos relevantes para o domínio da aplicação; • Dimensionar os atributos; • Descrever como os comportamentos identificados como pertinentes devem funcionar; • Exercício: • Criar o protótipo de um objeto para a representação de um ponto
Objetos • Existem em dois momentos • Tempo de compilação • Tempo de execução • Entidades • Classes – Definição dos protótipos dos objetos, especifica qual é a estrutura e comportamento do objetos • Instâncias – realização funcional das classes. São os elementos executivos do sistema.
Classes • Mundo das idéias de Platão; • Especificação do conceito geral, a forma que as instâncias desta classe devem ter; • Define os comportamentos comuns a todas as instâncias da classe • Código fonte único para todas as instâncias é especificado na definição da classe • Uma outra forma de entender classes é considerá-las como tipos de dados (com comportamento associado)
Atributos public class Ponto extends Object { //atributosdaclasse privatefloat x; privatefloat y; privatefloat z; } Dados que definem a forma da classe; Qual informação a classe possui;
Métodos/Mensagens public class Ponto extends Object{ privatefloat x; privatefloat y; privatefloat z; publicvoidmovePara(intnx, intny, intnz) { x = x + nx; y = y + ny; z = z + nz;} publicvoidsetponto(intnx, intny, intnz) { x = nx; y = ny; z = nz;} publicvoidprintIt() { System.out.print(x); System.out.print(y);System.out.print(z); System.out.print("\n");} } Funcionalidades da classe, o que a classe pode fazer
Construtores public class Ponto extends Object{ privatefloat x; privatefloat y; privatefloat z; public Ponto(){ x = 0; y = 0; z = 0; } public Ponto(intnx, intny, intnz){ x = nx; y = ny; z = nz; } } Responsável pela criação de instâncias da classe; Aloca memória para os atributos da instância na Heap;
Métodos de Acesso • Devido ao encapsulamento, os atributos de uma classe só são acessíveis pelos métodos da própria classe • Possível solução: • Criar métodos para acessar e alterar os atributos • Métodos de acesso violam o princípio do encapsulamento?
Instâncias publicclassTestePonto{ public static void main(String[] args) { Ponto p = new Ponto(); Ponto p2 = new Ponto(1,2,3); p.setponto(10, 20, 30); p.printIt(); p2.printIt(); System.out.println("Hello world!"); } } • São realizações do conceito definido pela classe • Ex: um cavalo específico com cor, tipo de crina, etc, definidos
Encapsulamento Objeto 1 Objeto 2 Atributos Atributos mensagens mensagens Característica intrínseca do paradigma OO Variáveis/atributos são encapsulados dentro do escopo das instâncias
A Função de Entrada publicclassHellowWorld { public static void main(String[] args) { System.out.println(“Ponto de entrada!"); } } #include <iostream> intmain() { std::cout << “Ponto de entrada!“ ; } Varia de acordo com linguagem de programação Ponto de entrada do programa onde as instâncias iniciais devem ser criadas Em Java Em C++
Revisitando o Documento de Descrição O sistema consiste em um programa que permite 1 ou 2 pessoas jogar damas. Uma interface gráfica representado o tabuleiro é apresentada em estado inicial com as peças dispostas a cada início de partida. O jogador pode clicar na peça que deseja mover e em seguida na casa para a qual a peça deve ser movida. O sistema testará se o movimento é válido e se este for o caso, a peça será movimentada. O jogador pode também disputar uma partida contra o computador. O computador poderá jogar no modo “fácil”, “normal”, “avançado”, “impossível”.
Identificando Classes, Atributos e Comportamentos Identifique quais serão as classes iniciais a partir do texto anterior Identifique atributos e comportamentos de cada uma das classes
Pontos Chave Orientação a Objetos é um paradigma de programação totalmente diferente da programação estruturada; O conceito base que permeia OO é a abstração; Classes definem a forma geral dos objetos Instâncias são realizações funcionais das classes; Encapsulamento garante que atributos só sejam acessíveis aos métodos da classe que os definem;
Referências R. S. Wazlawick, Análise e Projeto de Sistemas de Informação Orientados a Objetos. Ed. Campus, 2004. Robert W. Sebesta, Concepts of Programming Languages. Addison Wesley, 7th Ed. H. M. Deitel, P. J. Deitel. Java™ Como Programar. Bookman, 3rd Ed, 2000.