590 likes | 684 Views
Bancos de Dados Orientados a Objetos. Álvaro Vinícius de Souza Coêlho alvaro.degas@yahoo.com.br. Orientação a Objetos. O que é um objeto Alguma coisa que faz sentido no contexto da aplicação.
E N D
Bancos de Dados Orientados a Objetos Álvaro Vinícius de Souza Coêlho alvaro.degas@yahoo.com.br
Orientação a Objetos • O que é um objeto • Alguma coisa que faz sentido no contexto da aplicação. • Podem ser definidos como um conceito, abstração ou simplesmente algo que tenha significado bem definido • Objetos servem a dois propósitos: Prover entendimento do mundo real e dar uma base prática para a implementação
Orientação a Objetos • O que é um objeto • A decomposição de um problema em seus objetos depende de preferências e julgamentos pessoais • Todo objeto tem identidade e é distinguível dos seus semelhantes • Objeto: Uma Coisa. Classe: Conjunto de Coisas
Orientação a Objetos • O que é um objeto • Classes: Árvores, Árvores Frutíferas, Árvores Ornamentais, Empregados, Fornecedores • Objetos:“A mangueira do quintal da minha avó”, “José da Silva, Professor, nascido em 14/07/1963” e “Microsoft Corporation”
Orientação a Objetos • Classes • “É um conceito que descreve um grupo de objetos com propriedades (atributos) similares, comportamentos (métodos), relacionamentos (associações) comuns com outras classes e principalmente, semântica semelhante “ Rumbaugh • Parêntesis são notas minhas
Orientação a Objetos • Classes • Se o foco da modelagem é objeto, porque perder tempo com classes? • O agrupamento de objetos em classes permite a abstração do problema! • Prerrogativa de generalizar a partir de poucos casos específicos
Orientação a Objetos • Classes • As definições são armazenadas uma por classe, não uma por instância • As operações também são definidas para a classe, de forma que seus objetos possam reutilizá-las • Tomando por exemplo a classe Pessoa
Orientação a Objetos • Classes • Pode ser necessário saber que uma pessoa (qualquer) possui: Idade, Nome, Endereço e, possivelmente Cônjuge, Emprego e Filhos • Qualquer pessoa, também, tem os comportamentos de Casar, Separar, Ter Filhos, Aniversariar, Se mudar ...
Orientação a Objetos • Classes • Isso é verdade para todas as pessoas que eventualmente sejam inseridas nesta classe • Ainda que o valor de cada informação possa ser modificado a cada caso, a forma de descrição é a mesma
Orientação a Objetos • Classes • José pode ter 34 anos, morar na Rua das Flores, não ter cônjuge, trabalhar como vendedor na Sapataria Vianna e ter uma filha, a Maria. • Antônio pode ter 51 anos, morar na Rua da Independência, ter uma esposa (Helena), trabalhar como gerente na Sapataria Vianna e ter dois filhos: Pedro e Ricardo
Orientação a Objetos • Classes • José e João são, nesta abordagem, objetos de uma mesma Classe • Objetos de uma classe tem os mesmos atributos e comportamentos padronizados • não necessariamente iguais, como vai se ver
Orientação a Objetos • Classes • Os objetos de uma classe normalmente se diferenciam pelos seus atributos e relações com outros objetos • Mas dois objetos podem ser idênticos em seus atributos e relações, mantendo ainda assim cada um a sua individualidade
Orientação a Objetos • Classes • Por exemplo um sistema de pesquisa por amostragem • Cada pessoa entrevistada te seu nome mantido no anonimato. É um objeto da classe Entrevistado • Uma classe “Entrevistado” possui os atributos “Cor”, “Naturalidade”, “Idade”, “Faixa Salarial” e “Sexo”.
Orientação a Objetos • Classes • Podem existir inúmeras instâncias de objetos com os mesmos valores (Negra, Itabuna/BA, 22, 0 a 300 Reais, Feminino) • Apesar disso, cada instância é única – e pode ser referida unicamente no sistema
Orientação a Objetos • Classes • Os objetos de uma classe compartilham uma semântica comum, mais que atributos e métodos comuns
Orientação a Objetos • Classes • Por exemplo, um objeto da classe Roupa e um objeto da classe Carro podem ter os atributos Cor e Fabricante. • Porém, olhados sob a perspectiva dos mais variados sistemas terão, certamente, que ser colocados em classes distintas • Exceto no caso de um sistema bastante excêntrico - não consegui pensar em nenhum caso que Cor e Fabricante fossem relevantes ao mesmo tempo em que roupas e carros pudessem ficar numa mesma classe.
Orientação a Objetos • Classes • Cada objeto sabe a que classe pertence, • Isto é tão natural que muitas Linguagens Orientadas a Objeto implementam um atributo interno que informa a classe do objeto.
Orientação a Objetos • Como identificar classes. Iniciando a modelagem • Classes são coisas que deverão existir dentro do sistema. Logo, devem representar coisas do mundo real • Normalmente aparecem como nomes nas sentenças que definem o mundo a ser modelado (a se ver em UML)
Orientação a Objetos • Como identificar classes. Iniciando a modelagem • Deve-se observar que nem todos os nomes das sentenças são classes • É interessante ressaltar que a observância dessas regras pode resultar no surgimento/desaparecimento de classes no decorrer do processo
Orientação a Objetos • Como identificar classes. Iniciando a modelagem • A orientação a objetos sugere que o processo de análise seja feito em espiral • cada etapa pode ser re-visitada inúmeras vezes, e a cada destas se acrescenta novas características
Orientação a Objetos • Como identificar classes. Iniciando a modelagem • Lembrança Necessária: É necessário lembrar de alguma coisa sobre os objetos da classe? • Processamento Necessário: Há algum comportamento relevante dos objetos?
Orientação a Objetos • Como identificar classes. Iniciando a modelagem • Atributos Múltiplos: Duvidar de classes que não tenham pelo menos dois atributos. • Mais de um objeto por classe: Duvidar de classes que tenham somente um objeto
Orientação a Objetos • Como identificar classes. Iniciando a modelagem • Atributos sempre aplicáveis: Deve haver um conjunto de atributos possível de se imaginar para os mais diferentes objetos da classe. • Caso o conjunto seja sempre o mesmo ok. Caso contrário, deve se tratar de Generalização
Pessoa Empresa Orientação a Objetos • Classes, no diagrama de casses, devem ser colocados num retângulo dividido em três partes, a primeira com seu nome
Orientação a Objetos • Como identificar Atributos • Atributos são informações específicas de propriedades de um objeto que são relevantes para o sistema • Para identificar os atributos, deve-se olhar para as classes identificadas e imaginar as responsabilidades do sistema. • O que é necessário saber sobre quem, a qualquer tempo.
Orientação a Objetos • Como identificar Atributos • Atributos devem ser um valor de dados puro • Não se pode permitir que um atributo seja um outro objeto • Mas podem ser multivalorados • Os atributos vão ser listados na segunda parte do retângulo da classe
Orientação a Objetos • Identificadores Naturais e Artificiais • Existem atributos que são naturalmente identificadores únicos de objetos: Placa, CPF, etc. • Os BD Relacionais usam identificadores únicos, naturais ou artificiais, para reconhecer um objeto (uma tupla).
Orientação a Objetos • Identificadores Naturais e Artificiais • Aqui se deve esquecer a questão: Atributos nunca são identificadores únicos • Ainda que não ocorram mais de uma vez e eventualmente sejam usados assim na implementação. • Chaves primárias são considerações de projeto. • E em BDs Relacionais
Orientação a Objetos • Identificadores Naturais e Artificiais • Portanto, RG, Placa, Chassis são atributos perfeitamente válidos. • Mas Usuário_ID, CodPaciente NumCliente são erros
Orientação a Objetos • Generalização • Uma classe deve ter atributos ou métodos específicos para objetos bem definidos • Por exemplo, uma classe “Figura Geométrica” • Atributos “Posição_Centro” • Métodos “Desenhar()” e “Área()”.
Orientação a Objetos • Generalização • Mas para figuras diferentes, a forma de calcular a área muda de acordo com o tipo • Círculo e Retângulo • Além disso, atributos também sofrem mudanças • Círculos precisam de “Raio” e retângulos precisam de “Base” e “Altura”
Orientação a Objetos • Generalização • “Círculo” e “Retângulo” são, portanto, candidatos naturais a serem generalizados na classe “Figura Geométrica” • Regra Geral: “Se duas (ou mais) classes tem semântica semelhante, e um ou mais atributo ou método e comum (mas não todos, pois seriam a mesa classe!), dêvem ser conjugadas como especialização de uma terceira”
Orientação a Objetos • Generalização • Analogamente, “Se uma classe tem um (ou mais de um) conjunto de atributos ou métodos que são empregados apenas em ocasiões específicas, deve ser dividida em uma ou mais especialização”. • Em ambos os casos, os atributos ou métodos que forem comuns devem ser colocados na classe geral, restando para as especializações aqueles que forem do seu escopo
Orientação a Objetos • Generalização • Generalização e Especialização provêem uma série de vantagens, ligadas à herança e reutilização de código – A se ver em UML
Orientação a Objetos • Associações entre Classes • No levantamento das classes ou dos atributos, pode-se perceber que há relações entre duas ou mais classes • As associações complementam a informação do objeto com mapeamentos necessários para que ele possa de fato cumprir seu papel
Orientação a Objetos • Associações entre Classes • São semelhantes aos relacionamentos do MER • Possuem cardinalidade • Um para Um • Um para muitos • Muitos para muitos
Orientação a Objetos • Associações entre Classes • E opcionalidade • As associações podem ou não obrigar cada objeto a se associar com algum outro, de acordo com as regras da cardinalidade • A notação para cardinalidade e opcionalidade não será mostrada – A se ver em UML
Orientação a Objetos • Associações entre Classes • As associações podem ser percebidas a partir dos atributos: • Por exemplo, uma classe “Filme” tem, entre outros, o atributo “Diretor”. • Há uma classe “Diretor”, aojando objetos deste tipo • A classe filme ganha uma associação com a classe diretor: “Dirigido por”.
Orientação a Objetos • Associações entre Classes • No nosso exemplo, os atributos agora estão colocados. • As associações idem • Observá-las entre Pessoa e Empresa (“trabalha em”), e mesmo entre Pessoa e Pessoa (“filho de” e “Casado com”).
Pessoa Empresa RazãoSocial Endereço Nome Idade Endereço Trabalha em Casado com Filho de Orientação a Objetos • Associações entre Classes
Orientação a Objetos • Como identificar Métodos • Um método é uma função de transformação • Pode ser aplicada por ou para objetos em uma classe • Após a execução de um método, algum tem sempre seu estado alterado (ainda que para mesmo, mas houve a transformação)
Orientação a Objetos • Como identificar Métodos • Exceto em três métodos especiais • Criar, que é um método específico da classe, e que especifica que uma nova instância passa a existir. • Destruir, que, similarmente, exclui uma instancia daquela casse • destruir deve ser aplicado ao objeto, ao contrário de criar
Orientação a Objetos • Como identificar Métodos • Pegar_*, que são métodos que permitem o acesso aos atributos. • Dispensáveis, para efeito de desenvolvimento (para que usar X := Mostrar_Nome(Empregado) se se pode fazer X := Empregado.Nome?)
Orientação a Objetos • Como identificar Métodos • Muitos autores recomendam o uso destes tipos de método para esconder a implementação interna do objeto • Em caso de modificações específicas, não estender alterações por outros objetos – enfraquecer o acoplamento
Orientação a Objetos • Como identificar Métodos • Os métodos fica na terceira e última parte do retângulo • Em alguns casos, uma mesma operação pode ser aplicada, com adaptações específicas, a diferentes classes. Esta propriedade é chamada polimorfismo.
Orientação a Objetos • Como identificar Métodos • O exemplo do cálculo da área de figuras geométricas é um cãs de polimorfismo • A área de um círculo, de um triângulo, de um retângulo e de um trapézio são calculadas, embora com semântica idêntica, de formas totalmente diferentes
Orientação a Objetos • Como identificar Métodos • Para se identificar métodos, deve-se levantar as funções que altera o estado de um objeto • Isso sugere o uso de métodos Fazer_* para cada atributo modificável pelo sistema, o que normalmente é válido
Orientação a Objetos • Como identificar Métodos • Há métodos que criam ou modificam uma associação com outros objetos • Estas associações precisarão respeitar a semântica de cardinalidade e opcionalidade que tenha sido definida entre as classes
Orientação a Objetos • Como identificar Métodos • Finalmente, existem métodos que, para serem executados, recorrem a métodos de outros objetos. • Por exemplo, um objeto “CNH”, num sistema do Detran, tem o método “Emitir” • CNH se associa, um para um, com Condutor
Orientação a Objetos • Como identificar Métodos • Este método verifica os resultados do exame do condutor e, caso esteja tudo em ordem, libera os dados para impressão. • Um Pedido, portanto, deve ser enviado ao objeto específico da classe “Exames” que armazena exames de condutores, solicitando o serviço (que deverá existir) “Verifica_Aprovação”.