Desenvolvimento de Sistemas Orientados a Objetos METODOLOGIA PARA
Desenvolvimento de Sistemas Orientados a Objetos ►METODOLOGIA PARA DESENVOLVIMENTO DE SISTEMAS Prof. Dr. rer. nat. Daniel D. Abdala e-mail: abdala@das. ufsc. br 1
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 2
Plano �Paradigma e Filosofia OO; �Abstração; �Classes vs Instâncias; �Métodos; �Encapsulamento. 3
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) 4
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 5
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 6
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 7
Exemplo �Abstração do objeto Cavalo • Atributos �Cor �Crina �Raça • Comportamentos �Galopar �Trotar �Saltar �. . . 8
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 9
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. 10
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) 11
Atributos �Dados que definem a forma da classe; �Qual informação a classe possui; public class Ponto extends Object { //atributos da classe private float x; private float y; private float z; } 12
Métodos/Mensagens �Funcionalidades da classe, o que a classe pode fazer public class Ponto extends Object{ private float x; private float y; private float z; public void move. Para(int nx, int ny, int nz) { x = x + nx; y = y + ny; z = z + nz; } public void setponto(int nx, int ny, int nz) { x = nx; y = ny; z = nz; } public void print. It() { System. out. print(x); System. out. print(y); System. out. print(z); System. out. print("n"); } } 13
Construtores �Responsável pela criação de instâncias da classe; �Aloca memória para os atributos da instância na Heap; public class Ponto extends Object{ private float x; private float y; private float z; public Ponto(){ x = 0; y = 0; z = 0; } public Ponto(int nx, int ny, int nz){ x = nx; y = ny; z = nz; } } 14
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? 15
Instâncias � São realizações do conceito definido pela classe • Ex: um cavalo específico com cor, tipo de crina, etc, definidos public class Teste. Ponto{ public static void main(String[] args) { Ponto p = new Ponto(); Ponto p 2 = new Ponto(1, 2, 3); p. setponto(10, 20, 30); p. print. It(); p 2. print. It(); System. out. println("Hello world!"); } } 16
Encapsulamento �Característica intrínseca do paradigma OO �Variáveis/atributos são encapsulados dentro do escopo das instâncias Objeto 1 Objeto 2 Atributos mensagens 17
A Função 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 public class Hellow. World { public static void main(String[] args) { System. out. println(“Ponto de entrada!"); } } �Em C++ #include <iostream> int main() { std: : cout << “Ponto de entrada!“ ; } 18
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”. 19
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 20
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; 21
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, 7 th Ed. � H. M. Deitel, P. J. Deitel. Java™ Como Programar. Bookman, 3 rd Ed, 2000. 22
- Slides: 22