Orientação a Objetos e UML Aula #8.1. EBS 211 POO e UML Prof. Luiz Fernando S. Coletta luizfsc@tupa.unesp.br Campus de Tupã
Roteiro Análise e projeto OO; Engenharia de software e UML; Diagrama de classes. 2
Engenharia de Software Fases do processo de software 1. Levantamento de requisitos; 2. Projeto (modelagem OO/UML); 3. Codificação; 4. Testes; 5. Implantação; 6. Manutenção. 3
Engenharia de Software Fases do processo de software 1. Levantamento de requisitos; 2. Projeto (modelagem OO/UML); 3. Codificação; 4. Testes; 5. Implantação; 6. Manutenção. Trabalho 1 Prototipação 4
Engenharia de Software Fases do processo de software 1. Levantamento de requisitos; 2. Projeto (modelagem OO/UML); 3. Codificação; Ler Capítulo 1 4. Testes; 5. Implantação; 6. Manutenção. Trabalho 1 Prototipação GUEDES, G. T. A. UML: Uma Abordagem Prática. 2 ed. São Paulo: Novatec, 2006. 5
Classes e Objetos Exemplo: Biblioteca Classe 6
Classes e Objetos Exemplo: Biblioteca Classe Objetos Biblioteca Nacional 7
Classes e Objetos Exemplo: Biblioteca Classe Objetos Biblioteca Nacional Biblioteca Infantil 8
Classes e Objetos Exemplo: Biblioteca Classe Objetos Biblioteca Nacional Biblioteca Infantil Biblioteca Unesp/Tupã 9
Encapsulamento Caixa Preta 10
Encapsulamento Interface da classe Caixa Preta 11
Encapsulamento Interface da classe Caixa Preta O que são então os sinais - e + no diagrama de classes??? 12
Encapsulamento Atributos de uma classe são acessíveis apenas pelos métodos da própria classe; Outras classes só podem ter acesso aos atributos de uma classe invocando métodos públicos; Restringe visibilidade e facilita o reúso. 13
Exemplo estufa 14
Exemplo estufa Um sistema captura temperatura, umidade, etc. através de sensores. 15
Exemplo estufa Sistema de refrigeração acessa essas informações e regula a temperatura. Um sistema captura temperatura, umidade, etc. através de sensores. 16
Exemplo estufa Sistema de refrigeração acessa essas informações e regula a temperatura. Um sistema captura temperatura, umidade, etc. através de sensores. Computador remoto acessa as informações para monitorar e extrair mais informações. 17
UML (Unified Modeling Language ou Linguagem de Modelagem Unificada) Necessidade de padronização; 18
UML (Unified Modeling Language ou Linguagem de Modelagem Unificada) Necessidade de padronização; Surgiu em 1997; 19
UML (Unified Modeling Language ou Linguagem de Modelagem Unificada) Necessidade de padronização; Surgiu em 1997; Booch, Rumbaugh e Jacobson; 20
UML (Unified Modeling Language ou Linguagem de Modelagem Unificada) Necessidade de padronização; Surgiu em 1997; Booch, Rumbaugh e Jacobson; Linguagem visual para auxiliar no desenvolvimento de software; 21
UML (Unified Modeling Language ou Linguagem de Modelagem Unificada) Necessidade de padronização; Surgiu em 1997; Booch, Rumbaugh e Jacobson; Linguagem visual para auxiliar no desenvolvimento de software; Sistematiza a criação de diversos documetos: artefatos de software. 22
Diagrama de Classes 23
Diagrama de Classes Permite a visualização das classes do sistema 24
Diagrama de Classes Permite a visualização das classes do sistema Explicita onde estão os atributos e métodos; 25
Diagrama de Classes Permite a visualização das classes do sistema Explicita onde estão os atributos e métodos; Define a troca de mensagens entre as classes; 26
Diagrama de Classes Permite a visualização das classes do sistema Explicita onde estão os atributos e métodos; Define a troca de mensagens entre as classes; Base para projetar outros diagramas (é o ponto de partida). 27
Diagrama de Classes Exemplo classe Cliente: 28
Diagrama de Classes Associação binária: 29
Diagrama de Classes Associação binária: Navegabilidade 30
Diagrama de Classes Multiplicidade de relacionamentos http://www.dsc.ufcg.edu.br/~jacques/cursos/map/html/uml/index.htm 31
Diagrama de Classes Agregação: um objeto é parte de outro e a parte pode existir sem o todo. http://www.dsc.ufcg.edu.br/~jacques/cursos/map/html/uml/index.htm 32
Diagrama de Classes Agregação: um objeto é parte de outro e a parte pode existir sem o todo. Objeto-Todo Objeto-Parte http://www.dsc.ufcg.edu.br/~jacques/cursos/map/html/uml/index.htm 33
Diagrama de Classes Agregação: um objeto é parte de outro e a parte pode existir sem o todo. Passagem por referência Objeto-Todo Objeto-Parte http://www.dsc.ufcg.edu.br/~jacques/cursos/map/html/uml/index.htm 34
Diagrama de Classes Exemplo de Agregação: 35
Diagrama de Classes Composição: o todo contém as partes e não referências para as partes. Quando o todo é destruído, suas partes também são. http://www.dsc.ufcg.edu.br/~jacques/cursos/map/html/uml/index.htm 36
Diagrama de Classes Composição: o todo contém as partes e não referências para as partes. Quando o todo é destruído, suas partes também são. Objeto-Todo Objeto-Parte http://www.dsc.ufcg.edu.br/~jacques/cursos/map/html/uml/index.htm 37
Diagrama de Classes Composição: o todo contém as partes e não referências para as partes. Quando o todo é destruído, suas partes também são. Passagem por valor Objeto-Todo Objeto-Parte http://www.dsc.ufcg.edu.br/~jacques/cursos/map/html/uml/index.htm 38
Diagrama de Classes Exemplo de Composição: 39
Diagrama de Classes Especialização/Generalização (Herança): 40
Diagrama de Classes Outro exemplo de Herança: 41
Exemplo Herança em C# class A{ private int a; public A() { Console.WriteLine("Construtor de A"); public void M(string nome) { Console.WriteLine("Meu nome é " + nome); 42
Exemplo Herança em C# class A{ private int a; class B : A{ private int b; public A() { Console.WriteLine("Construtor de A"); public B() { Console.WriteLine("Construtor de B"); public void M(string nome) { Console.WriteLine("Meu nome é " + nome); public void N() { Console.WriteLine("Método N"); 43
Exemplo Herança em C# class A{ private int a; class B : A{ private int b; public A() { Console.WriteLine("Construtor de A"); public B() { Console.WriteLine("Construtor de B"); public void M(string nome) { Console.WriteLine("Meu nome é " + nome); public void N() { Console.WriteLine("Método N"); class Program{ static void Main(string[] args) { B b = new B(); b.m("carlinhos"); Console.ReadKey(); 44
Exemplo Herança em C# class A{ private int a; public A() { Console.WriteLine("Construtor de A"); public B() { Console.WriteLine("Construtor de B"); public void M(string nome) { Console.WriteLine("Meu nome é " + nome); public void N() { Console.WriteLine("Método N"); class Program{ static void Main(string[] args) { B b = new B(); b.m("carlinhos"); Console.ReadKey(); class B : A{ private int b; O que será escrito ao rodar o programa??? 45
Exemplo Herança em C# class A{ private int a; class B : A{ private int b; public A() { Console.WriteLine("Construtor de A"); public B() { Console.WriteLine("Construtor de B"); public void M(string nome) { Console.WriteLine("Meu nome é " + nome); public void N() { Console.WriteLine("Método N"); class Program{ static void Main(string[] args) { B b = new B(); b.m("carlinhos"); Console.ReadKey(); Construtor de A Construtor de B Meu nome é Carlinhos 46
Criar um diagrama de classes para um sistema de controle bancário Neste sistema há clientes que possuem nome, endereço, telefone, etc. e podem ser pessoa jurídica com CNPJ ou pessoa física com CPF; deve-se, portanto, ter um verificador de validade de CPF e CNPJ para cada caso; Cada cliente pode ter uma ou mais contas abertas e estas contas podem ser convencionais, ou ainda especiais (com menores juros e limites diferenciados) ou conta poupança, na qual deve-se conhecer o rendimento. Estas contas devem ser passíveis de saques, depósitos, consultas de extrato/saldo, etc. 47
Criar um diagrama de classes para um sistema de controle bancário Neste sistema há clientes que possuem nome, endereço, telefone, etc. e podem ser pessoa jurídica com CNPJ ou pessoa física com CPF; deve-se, portanto, ter um verificador de validade de CPF e CNPJ para cada caso; Cada cliente pode ter uma ou mais contas abertas e estas contas podem ser convencionais, ou ainda especiais (com menores juros e limites diferenciados) ou conta poupança, na qual deve-se conhecer o rendimento. Estas contas devem ser passíveis de saques, depósitos, consultas de extrato/saldo, etc. 48
Próxima aula: Dia 30/8 Laboratório 2 Prof. Luiz Fernando S. Coletta luizfsc@tupa.unesp.br Campus de Tupã