Prévia do material em texto
U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 1 • Raimundo Aguiar Xavier • Mestre em Informática (UFRJ) Linha pesquisa – Informática e Sociedade • Pesquisador no Fernandes Figueiras(FioCruz) BLH – Banco de Leite Humano • Atuo na área desde 1983 como técnico e professor Apresentação U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 2 1. Dotar os alunos dos conhecimentos conceituais 2. Treinar os alunos em ferramenta CASE (Astah (antigo Jude Take) ou ArgoUML) para implementar os conceitos 3. Construir conhecimento desenvolvendo projetos com temas reais Objetivos U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 3 1. Recursos didáticos: Quadro, laboratório de informática, ferramenta case 2. Avaliações: 1. Conceitual - Prova escrita 2. Prática – Desenvolvimento e apresentação de projetos Metodologia U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 4 Referências Bibliográficas BEZERRA, Eduardo. Princípios de Análise e Projeto de Sistemas com UML. Rio de Janeiro: Elsevier / Campus COAD, Peter, YOURDON, Edward.Análise baseada em objetos. Rio de Janeiro: Campus, 1991. Furlan, José Davi. Modelagem de Objetos através da UML. São Paulo: Makron Books, 1998. Internet https://wikipedia.org https://pt.wikipedia.org/wiki/UML http://www.mundooo.com.br http://www.omg.org/technology/documents/formal/uml.htm https://wikipedia.org/ https://pt.wikipedia.org/wiki/UML http://www.mundooo.com.br/ http://www.omg.org/technology/documents/formal/uml.htm U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 5 1. Introdução à AOO – Análise Orientada à Objetos 2. Introdução a UML – Linguagem de Modelagem Unificada 3. Diagramas da UML 2.5 3.1 Diagramas estruturais 3.1.1 Diagramas de classes 3.1.2 Diagramas de objetos 3.1.3 Diagramas de componentes 3.1.4 Diagramas de implementação ou instalação 3.1.5 Diagramas de pacotes 3.1.6 Diagramas de estrutura composta 3.1.7 Diagrama de perfil Agenda U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 6 3.2 Diagrama comportamental 3.2.1 Diagrama de caso de uso 3.2.2 Diagrama de sequência 3.2.3 Diagrama de colaboração 3.2.4 Diagrama de transição de estados 3.2.5 Diagrama de atividade Agenda continuação... U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 7 O que é modelagem? https://pt.wikipedia.org/wiki/Modelagem_de_software É a atividade de construir modelos que expliquem as características ou o comportamento de algo que se queira entender. pode referir-se a: AnyLogic - Um software de modelagem de simulação. Arquitetura de dados - Uma estrutura dos componentes de dados de uma organização. Modelagem de ameaças - Um processo dentro do ciclo de vida do desenvolvimento de software seguro. Modelagem ambiental - Visa prever eventos ou fenômenos ambientais a partir de princípios gerais. Modelagem computacional - Uma área de conhecimento multidisciplinar. Modelagem conceitual - Descrição da semântica de aplicativos de software em um alto nível de abstração. Modelagem de dados - Um modelo que explique as características de funcionamento e comportamento de um software. https://pt.wikipedia.org/wiki/Modelagem_de_software https://pt.wikipedia.org/wiki/AnyLogic https://pt.wikipedia.org/wiki/Arquitetura_de_dados https://pt.wikipedia.org/wiki/Modelagem_de_amea%C3%A7as https://pt.wikipedia.org/wiki/Modelagem_ambiental https://pt.wikipedia.org/wiki/Modelagem_computacional https://pt.wikipedia.org/wiki/Modelagem_conceitual https://pt.wikipedia.org/wiki/Modelagem_de_dados U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 8 Modelagem matemática - A área do conhecimento que estuda a simulação de sistemas reais. Modelagem molecular - Um termo coletivo que se refere aos métodos para modelar ou mimetizar o comportamento das moléculas. Modelagem de processos de negócio - A atividade de representação de processos de uma empresa. Modelagem de processos químicos - Modelagem computacional para o desenho de processos em engenharia química. Modelagem tridimensional - O processo de desenvolvimento de uma representação matemática de qualquer superfície tridimensional de um objeto. https://pt.wikipedia.org/wiki/Modelagem_matem%C3%A1tica https://pt.wikipedia.org/wiki/Modelagem_molecular https://pt.wikipedia.org/wiki/Modelagem_de_processos_de_neg%C3%B3cio https://pt.wikipedia.org/wiki/Modelagem_de_processos_qu%C3%ADmicos https://pt.wikipedia.org/wiki/Modelagem_tridimensional U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 9 Modelo de Reação-Difusão - Modelo de como são formados e regulados padrões característicos durante o desenvolvimento de embriões animais. Modelagem de software - Uma atividade de construir modelos que expliquem as características ou o comportamento de um software. https://pt.wikipedia.org/wiki/Modelo_de_Rea%C3%A7%C3%A3o-Difus%C3%A3o https://pt.wikipedia.org/wiki/Modelagem_de_software U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 10 Por que usar modelagem? Ajuda a visualizar um sistema como ele é ou como se deseja que ele seja Permite especificar o comportamento e a estrutura de um sistema Oferece uma representação que guiará a construção do sistema Documenta as decisões tomadas pela avaliação das alternativas propostas U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 11 Captura dos processos (Use Cases) Melhora da comunicação entre as partes envolvidas (Especialistas e Analistas) Gerência da complexidade permitindo exibir várias Visões dos elementos de modelo Definição da Arquitetura lógica independente das possíveis implementações Permitir o reuso pela criação de componentes Por que usar modelagem? U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 12 Auxilia: ▪ Avaliação dos riscos ▪ Definição do problema ▪ Gerenciamento do projeto Por que usar modelagem? U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 13 Modelagem Visual Modelagem Visual é a modelagem utilizando uma notação gráfica padrão Sistemas mais fáceis de se comunicarem A visualização em Gráficos diminui a complexidade Processos tornam-se mais claros Define toda a arquitetura de software Torna a reutilização muito mais significativa U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 14 1. Introdução a UML – Linguagem de Modelagem Unificada 2 - UML - Introducao.ppt U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 15 Motivação Por que é importante manter diversas linhas de desenvolvimento? “Uma vez que um software esteja em desenvolvimento, corrigir um problema pode custar até 10 vezes mais do que corrigir o mesmo problema no design. Caso o software tenha sido lançado, este custo pode ser de até 100 vezes”. (Gibb, 1998) 0 10 20 30 40 50 60 tempo e custo fase do projeto Custo das Mudanças Definição Desenvolvimento Manutenção U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 16 Análise e Projeto de Sistemas Orientado a Objetos Orientação a Objetos “Uma nova maneira de pensar os problemas utilizando modelos organizados a partir de conceitos do mundo real. O componente fundamental é o objeto que combina estrutura e comportamento em uma única entidade” (Rumbaugh) U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 17 Método OO “Um sistema construído usando um método OO é aquele cujos componentes são partes encapsuladas de dados e funções, que podem herdar atributos e comportamentos de outros componentes da mesma natureza, e cujos componentes comunicam-se entre si por meio de mensagens.” (Eduard Yourdon) Análise e Projeto de Sistemas Orientado a Objetos U.C.B.Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 18 Um sistema OO é dividido em componentes e não mais em processos. As funções do sistema ficam organizadas por afinidade e não mais por necessidade. Por exemplo: em um programa estruturado, as funções de Cliente estão espalhadas pelo programa de cadastro, de compras, de contas a receber, etc... As funções do Cliente em um sistema orientado a objetos só podem estar no objeto Cliente e em nenhum outro lugar. Análise Estruturada X Orientada a Objetos U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 19 Os objetos possuem dados (propriedades, atributos) e funções (comportamentos, métodos, serviços) Em um sistema estruturado, fazer uma alteração na estrutura dos dados pode ser uma enorme dor de cabeça porque qualquer programa pode acessar qualquer dado. E aí vem a clássica pergunta: “Se eu alterar a definição desse dado, quais programas serão afetados?” No sistema OO os dados ficam encapsulados às classes. Análise Estruturada X Orientada a Objetos U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 20 Um objeto pode herdar dados e comportamentos de outro Há um meio de comunicação bem estabelecido entre os componentes. Em vez de copiar e colar trechos de programa, a OO simula o inter- relacionamento dos objetos, tal qual acontece no mundo real. Análise e Projeto de Sistemas Orientado a Objetos U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 21 Objetos e Classes Um Objeto é um componente do mundo real que é mapeado para o domínio do sistema. Classe é uma descrição dos atributos e serviços comuns a um grupo de objetos. Pode-se entender uma classe como sendo um molde a partir do qual objetos serão construídos. Também é comum dizer que um objeto é a instância de uma classe. U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 22 Um objeto é qualquer coisa, real ou abstrata, na qual nós armazenamos dados e as operações que manipulam os dados [ Martin ] Um objeto ou uma instância é uma abstração de alguma coisa no domínio do problema, refletindo as capacidades do sistema de manter informações sobre ele, interagir com ele, ou ambos, um encapsulamento de valores de atributos e seus serviços exclusivos [ Yourdon ] Objetos U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 23 Um objeto é um ente independente, composto por: – Estado Interno: uma memória interna em que valores podem ser armazenados e modificados ao longo da vida do objeto (conjunto de atributos ou variáveis de instância). – Comportamento: conjunto de ações pré-definidas (denominadas métodos) através das quais o objeto responderá a demanda de processamento por parte de outros objetos; Objetos U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 24 Um objeto possui identidade É uma propriedade imutável e permanente que distingue um objeto de outros, independentemente de seu estado interno, e que não é perdida pelo objeto ao longo de toda a sua vida; Objetos U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 25 Classe é o agrupamento de objetos com a mesma estrutura de dados (atributos) e comportamento (operações) [ Rumbaugh ]; Classe é uma coleção de um ou mais objetos com um conjunto uniforme de atributos e serviços, incluindo uma descrição de como criar novos objetos na classe [ Yourdon ]; Descreve um conjunto infinito de objetos; Cada objeto é dito ser uma instância de uma classe; Classe U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 26 Classe Objetos Cliente Nome : String Idade : Num solicitarNotaFiscal() efetuarPagamento() Objetos e Classes “Jorge Aragão”: Cliente Nome : ”Jorge Aragão” Idade : 74 solicitarNotaFiscal() efetuarPagamento() “Renata Silva”: Cliente Nome : ”Renata Silva” Idade : 22 solicitarNotaFiscal() efetuarPagamento() U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 27 Quando se pensa em um cavalo, logo vem à mente um animal de quatro patas, cauda, crina etc. Pode ser que algum dia você veja dois cavalos, um mais baixo que o outro, um com cauda menor que o outro, um com menos patas que o outro. No entanto, você ainda terá certeza de estar diante de dois cavalos. Isso porque a idéia (classe) cavalo está formada na sua mente, independentemente das pequenas diferenças que possa haver entre os exemplares (objetos) da idéia cavalo. Objetos e Classes Classe: Cavalo Objetos: Burronildo Remeleco U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 28 Orientação a Objetos Encapsulamento Herança Polimorfismo Abstração U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 29 Abstração Alguns princípios se tornam fundamentais para a administração da complexidade de um domínio de problemas e das responsabilidades de um sistema. O primeiro destes princípios é a abstração: Abstração. Princípio de ignorar os aspectos de um assunto não relevantes para o propósito em questão, tornando possível uma concentração maior nos assuntos principais. [Oxford, 1986] A abstração consiste então na seleção que um analista faz de alguns aspectos, ignorando outros, desprendendo-se de detalhes irrelevantes. U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 30 Abstração Os brinquedos são um excelente exemplo de abstração. Um carro miniatura destinado a uma criança não deverá possuir um tanque de gasolina. Sabemos, e as crianças também sabem, que o tanque está presente no modelo real, mas as crianças sabem que não podem brincar com um carro destes, portanto este, e outros aspectos foram ignorados. U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 31 Quase tudo com que lidamos no mundo real – pessoas, lugares, coisas e conceitos – é intrinsecamente complexo, muito mais complexo do que podemos imaginar em um primeiro momento. Quando usamos a abstração, admitimos que o que estamos considerando é complexo; em vez de tentar compreender o todo, selecionamos parte dele. Sabemos que existem detalhes adicionais; simplesmente optamos por não considerá-los neste plano ou neste momento. Esta é uma das principais formas de administrar a complexidade. Abstração U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 32 É o resultado (ou ato) de se esconder os detalhes de implementação de um objeto do usuário; [ Martin ] Encapsulamento U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 33 Consiste em separar os aspectos externos de um objeto, que são acessíveis para outros objetos, dos detalhes internos de implementação do objeto; [ Rumbaugh ] Qualquer mecanismo que nos permita “esconder” a implementação do objeto fazendo com que outros componentes do sistema não tenham conhecimento do conteúdo interno dos dados armazenados no objeto; [ Yourdon ] Encapsulamento U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 34 A comunicação entre objetos é feita através de mensagens enviadas para as operações; A implementação de um objeto pode ser mudada sem afetar as aplicações que o usam; Facilidade de manutenção. Encapsulamento U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 35 É a forma sugerida pela OO de agrupar estrutura e comportamento dentro de um único modelo. Encapsulamento Funções (métodos) Dados (atributos) U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 36 Os objetos “escondem” sua estrutura interna e a implementação de seus serviços. Os dados de um objeto são acessados por outros objetos somente se o objeto disponibilizar funções de acesso a seus dados. Encapsulamento U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 37Princípio do Encapsulamento: A implementação de um objeto requisitado não importa para um objeto requisitante Objeto: caneta cor da tinta tipo de ponta escrever public class caneta { private String cor private String tipo_ponta public function escrever (){ } public function abrir () { } public function fechar () { } } Encapsulamento U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 38 Encapsulamento Características - Tudo o que diz respeito a um determinado objeto deve estar contido no próprio objeto. - A implementação de um objeto requisitado não interessa a um objeto requisitante. U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 39 Encapsulamento O encapsulamento reduz o trabalho no desenvolvimento de um novo sistema. O aninhamento dos dados e das funcionalidades que dizem respeito a um mesmo objeto diminui o fluxo entre as diferentes partes de um sistema e reduz significativamente a dificuldade dentro de um processo de alteração contínua. U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 40 Herança Mecanismo para expressar a similaridade entre classes, simplificando a definição de classes iguais a outras que já foram definidas. Ela representa generalização e especialização, tornando explícitos os atributos e métodos comuns em uma hierarquia. U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 41 É o mecanismo de reutilização de atributos e métodos definidos em classes gerais por classes mais específicas. Generalização / Especialização Uma classe filha herda características de outra (pai), diz- se que a filha é uma especialização. E que a classe pai é uma generalização. Herança Veiculo Veiculo AquaticoVeiculo Terrestre U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 42 Herança Aqui nasce um importante conceito, que foi uma das principais motivações da busca por novas metodologias de análise e programação de sistemas. Reutilização Colocar em ação ou usar novamente um serviço; empregar ou aplicar novamente para um determinado propósito. [Webster’s, 1977] U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 43 Reutilização Na análise, reutilizar é incorporar resultados obtidos em análises anteriores na análise atual. Ou no nosso caso específico, a característica de herança, é utilizar os métodos ou atributos escritos em classes superiores nas classes filhas, tornando desnecessário reescrever tais métodos ou atributos novamente. Herança U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 44 Herança Os atributos e métodos de uma classe são automaticamente repassados a suas subclasses U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 45 Na herança, classes semelhantes são agrupadas em hierarquias. Cada nível de uma hierarquia pode ser visto como um nível de abstração. Cada classe em um nível da hierarquia herda as características das classes nos níveis acima. Desta forma, as diferenças ou variações de uma classe em particular podem ser organizadas de forma mais clara. Herança Veiculo Veiculo AquaticoVeiculo Terrestre Veiculo Duas Rodas Veiculo Quatro Rodas U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 46 Herança Múltipla Para aqueles que já se perguntaram: Uma classe pode herdar características de mais de uma classe? A resposta é SIM. Uma classe pode ter mais de uma superclasse. Neste exemplo o carro anfíbio possui tanto características de um carro quanto de um barco. Carro Barco Carro Anfíbio U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 47 Classes Abstratas Já aprendemos que objetos são instâncias de uma classe. Cientes disto, poderíamos afirmar que toda classe deve cumprir a função de instanciar ao menos um objeto. Mas isto não é verdade! Existem as chamadas classes “concretas” e classes abstratas. Classes concretas se encaixam na afirmativa acima. Elas foram modeladas para que algum objeto seja instanciado a partir delas. U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 48 Classes Abstratas Classes abstratas não podem ter objetos instanciados a paritr delas. Servem para organizar um modelo de hierarquia de generalização. Propriedades comuns a diversas classes podem ser organizadas e definidas em uma única classe abstrata da qual as subclasses herdam. Obs: Classes abstratas só existem em hierarquias, quando se aplica herança. U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 49 Classes Abstratas Subclasses de uma classe abstrata também podem ser abstratas, mas abaixo delas deverá existir sempre uma ou mais classes concretas para finalizar a hierarquia. U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 50 Interfaces Uma interface especifica características que deverão ser implementadas por alguma classe. Um conceito similar ao das bibliotecas de implementação. No entanto, uma interface apenas descreve as assinaturas dos métodos e atributos que uma classe deve herdar, cabendo a esta, construir a implementação. Quando uma classe herda de uma interface, esta deve implementar todos os métodos contidos na interface. U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 51 Classes Abstratas e Interfaces Herança de Classes Abstratas versus Herança de Interfaces Enquanto a herança de classes descreve um modelo de ponto de partida para a criação de novas classes, a interface descreve o ponto de partida para implementação das ações de um objeto. U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 52 Polimorfismo Muito provavelmente, na fase de criação das classes, quando se está definindo os métodos, pode surgir a dúvida: “... será que eu poderia criar um procedimento em que o código mudasse em tempo de execução?”. Este é o princípio do polimorfismo. Por exemplo, dependendo da quantidade de parâmetros o código se comporta de uma forma ou de outra. Ou mesmo, dependendo do objeto requisitado, o resultado de um método é A ou B. U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 53 Polimorfismo A grande vantagem do uso do polimorfismo é a flexibilidade. Quando um novo objeto de uma nova classe é adicionado ao modelo, qualquer modificação afetaria apenas esse novo objeto e não quem envia a mensagem. U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 54 Polimorfismo U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 55 Polimorfismo U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 56 Construtores são métodos especiais chamados pelo sistema no momento da criação de um objeto; • Servem para inicializar objetos de forma organizada; • Devem ter o mesmo nome da respectiva classe; • Não possuem valor de retorno; • Pode haver mais de um construtor por classe (overloading ou sobrecarga de métodos); Métodos Construtores U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 57 class Conta { String numero; double saldo; void credito (double valor) { saldo = saldo + valor; } void debito (double valor) { saldo = saldo - valor; } Conta (String n) { numero = n; saldo = 0; } } Métodos Construtores U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 58 ... Conta conta1; conta1 = new Conta(“21.342-7”); conta1.credito(500.87); conta1.debito(45.00); System.out.println(conta1.saldo); .... Métodos Construtores U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 59 ... Conta conta1; conta1 = new Conta(); conta1.credito(500.87); conta1.debito(45.00); System.out.println(conta1.saldo); .... O construtor default foi perdido MétodosConstrutores U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 60 A presença de coleta automática de lixo torna o conceito de destrutores um pouco diferente de seus equivalentes em outras linguagens OO; Em Java destrutores são métodos chamados pelo sistema quando a memória de um objeto está para ser liberada pelo coletor automático de lixo (não quando está para ser coletada); Você pode chamar o destrutor, mas isso não implica que o objeto será deletado; Métodos Destrutores U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 61 Métodos Destrutores ... protected void finalize{ this.my_database.Close( ); } ... U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 62 Sobrecarga (Overload) Em linguagens OO, os métodos são diferenciados pelo nome, e pelo número, tipo e posição dos argumentos; Isto vale para qualquer método e não apenas para os construtores; Sobrecarga também é conhecida como sobreposição. U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 63 Sobrecarga de Métodos Métodos numa mesma classe com mesmo nome, que apresentem tipo e/ou quantidade de parâmetros diferentes são métodos sobrecarregados. Sobrecarga (Overload) U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 64 class Conta { String numero; double saldo; void credito (double valor) {saldo = saldo + valor;} void debito (double valor) {saldo = saldo - valor;} void debito () {saldo = saldo - (int)saldo;} Conta (String n) {numero = n; saldo = 0;} } Sobrecarga (Overload) Sobrecarga de Métodos U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 65 class CriaConta { public static void main (String[] args) { Conta conta1 = new Conta (“678-9”); conta1.credito(500.86); conta1.debito(100); System.out.println(conta1.saldo); conta1.debito(); System.out.println(conta1.saldo); } } Sobrecarga (Overload) Sobrecarga de Métodos U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 66 class Conta { String numero; double saldo; void credito (double valor) {saldo = saldo + valor;} void debito (double valor) {saldo = saldo - valor;} Conta () {saldo = 0;} Conta (String n) {numero = n; saldo = 0;} Conta (String n, double v) {numero = n; saldo = v;} } Sobrecarga de Construtores Sobrecarga (Overload) U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 67 class CriaConta { public static void main (String [] args) { Conta conta1 = new Conta (); Conta conta2 = new Conta (“44.222-6”); Conta conta3 = new Conta (300, “21.342-7”); System.out.println(conta1.saldo); System.out.println(conta2.saldo); } } Sobrecarga de Construtores Sobrecarga (Overload) U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 68 Qualquer tentativa de redefinição de método na mesma classe causará um erro de compilação. O que define um método é sua assinatura (lista de argumento) - portanto não adiantaria tentar enganá-lo como o código a seguir: public class Empregado { public double getSalario() { } public double getSalario() { } } Sobrecarga (Overload) U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 69 Sobreescrita (Override) Um método numa subclasse que possua a mesma assinatura (mesmo nome, quantidade e tipo de parâmetros e tipo de retorno) que outro na superclasse está em sobreescrita ou override. Também conhecido como substituição ou redefinição. U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 70 Substituir um método como o próprio nome já diz, significa cancelar um método de uma superclasse em uma subclasse dando-o um outro sentido, ou técnicamente, um outro código - portando infere-se que eu só posso substituir um método se houver herança caso contrário não existe substituição de método. Sobreescrita (Override) U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 71 public class Empregado { public double getSalario() { } } public class Horista extends Empregado { public double getSalario() { // código que retorna salário em horas } } public class Mensalista extends Empregado { public double getSalario() { // código que retorna salário mensal } } Sobreescrita (Override) U.C.B. Professor Raimundo Baliu Modelagem de Sistemas com UML - Introdução OO 72 Observe que o método getSalario nas subclasses têm comportamento distintos nas subclasses - isso devido ao fato de ter sido substituído nas subclasses. Observe ainda que o método nas subclasses se manteve idêntico ao método da superclasse no que se refere a assinatura do método (lista de argumentos) - se essa assinatura tivesse sido alterada, não seria substituição (override) e assim sobreposição ou sobrecarga (overload) - muita atenção com isso, mas estudaremos isso mais a frente. Sobreescrita (Override)