330 likes | 435 Views
Colégio da Imaculada Curso Técnico em Informática. Fundamentos da Orientação a Objetos (OO) Prof. Tales K. Cabral talescabral@colegiodaimaculada.com.br. 2º Módulo. O que é Orientação a Objetos?. Orientação a Objetos, consiste em considerar tudo como sendo objeto.
E N D
Colégio da ImaculadaCurso Técnico em Informática Fundamentos da Orientação a Objetos (OO) Prof. Tales K. Cabral talescabral@colegiodaimaculada.com.br 2º Módulo
O que é Orientação a Objetos? • Orientação a Objetos, consiste em considerar tudo como sendo objeto. • É um mundo onde qualquer “coisa” pode ser considerada um objeto. Provém do conceito de um novo Paradigma. Figura 1: Fundamentos da Orientação a Objetos
Exemplo real de OO • Montagem de um computador: • Composto por vários componentes: • Paca mãe • CPU • Placa de vídeo • Hd, etc. • Cada componente é bastante sofisticado, mas o usuário não precisa saber como funciona internamente. • Cada componente é independente dos demais • Para quem está montando, interessa apenas como os componentes irão interagir entre si: • A placa de vídeo se encaixa no slot? • O monitor funciona com esta placa? • O processador é compatível com a placa mãe?
Paradigma “Paradigma é a representação do padrão de modelos a serem seguidos. É um pressuposto filosófico matriz, ou seja, uma teoria, um conhecimento que origina o estudo de um campo científico; uma realização científica com métodos e valores que são concebidos como modelo; uma referência inicial como base de modelo para estudos e pesquisas”. Geral: Origem: Wikipédia, a enciclopédia livre. Disponível em: http://pt.wikipedia.org/wiki/Paradigma
Paradigma “Paradigma é um conjunto de regras que estabelecem fronteiras e descrevem como resolver os problemas dentro destas fronteiras. Os paradigmas influenciam nossa percepção; ajudam-nos a organizar e a coordenar a maneira como olhamos para o mundo...” Em administração: Reengenharia - Reestruturando a Empresa Daniel Morris e Joel Brandon
Paradigma “Enfoque pelo qual o ser humano enxerga o mundo, as coisas, a natureza, os outros seres e os outros homens.” No meio-ambiente: Projeto: “A Experiência do Semasa em Projetos de semi-urbanização de Favelas” Disponível em: http://www.semasa.sp.gov.br/admin/biblioteca/docs/pdf/35Assemae104.pdf
Paradigma (exemplos) • Em Ciência da Computação: • Paradigmas explicam como os elementos que compõem um programa são organizados e como interagem entre si. • Em desenvolvimento de sistemas: • Utilização da metodologia de Orientação a Objetos para se programar.
Surgimento da Orientação a Objetos • Linguagem SIMULA (Anos 60): • Linguagem SMALLTALK (Anos 70): • C++ • Java • Object Pascal / ambiente de desenvolvimento Delphi
Conceito de Objeto • Um objeto denota uma entidade, seja ela de natureza física, conceitual ou de software: • Entidades físicas: um carro, uma pessoa, uma casa • Entidade conceitual: um organograma de uma empresa • Entidade de software: um botão em uma GUI
Objetos e Classes • Um objeto é um conceito, uma abstração, algo com limites e significados nítidos em relação ao domínio de uma aplicação. • Objetos facilitam a compreensão do mundo real e oferecem uma base real para implementação em computador • Um objeto é algo que tem: • Estado – definição das propriedades (atributos) em um dado momento • Comportamento – definição dos métodos (habilidades) do objeto • Identidade – identificador do objeto se comparado a outros • O termo instância é frequentemente usado para descrever um objeto em particular
Objetos e Classes Figura 2: Objeto Figura 3: Objeto (Estado)
Estado de um Objeto • O estado de um objeto representa uma das possíveis condições em que um objeto pode existir. • O estado é representado pelos valores das propriedades de um objeto em um determinado instante • O estado do objeto usualmente muda ao longo do tempo • Exemplo (Aluno Ricardo): • Nome: Ricardo • Matricula: 969696 • Semestre de Ingresso: 96.1 • Idade: 18 • Fone: xxxx9190
Comportamento de um Objeto • O comportamento determina como um um objeto pode responder a interações mediante à ativação de operações decorrentes de mensagens recebidas de outros objetos • Assim o Comportamento define como um objeto reage a solicitações de outros objetos • O Comportamento é determinado pelo conjunto de operações que o objeto pode realizar. Por Exemplo: Objeto: Botão. Operação: Apertar()
Identidade de um Objeto • Cada objeto tem um único identificador, mesmo que seu estado seja idêntico ao de outro objeto. • O analista deve ter Cuidados na Análise • Atenção: A linguagem natural é muito ambígua • Vários termos podem se referir ao mesmo objeto • Um termo pode se referir a mais de um objeto ß Identificar apenas objetos relevantes Cada substantivo deve ser considerado dentro do contexto do domínio do problema. Isto quer dizer que ele não deve existir por si próprio.
Identidade de um Objeto • Atenção: • Substantivos podem ser verbalizados e vice-versa, ou seja, os resultados dependem do estilo de escrita dos requisitos do problema • Verificando os Substantivos • Ricardo (objeto) • Controle Acadêmico (refere-se ao sistema que está sendo construído) • Semestre (estado) • Matrícula : 969696 (Propriedade de um aluno) • Lista de Semestres Cursados (candidato a objeto) • Necessidade Especial (propriedade/atributo)
Classes • Uma classe é a descrição de um grupo de objetos com propriedades semelhantes (atributos), mesmo comportamento (operações), mesmos relacionamentos com outros objetos (associações e/ou agregações), e mesma semântica. • Um objeto é uma instância de uma classe • Uma classe representa um conjunto de objetos com características afins. • Uma classe é uma abstração que: • Enfatiza características relevantes • Abstrai outras características • Abstração: ajuda a lidar com a complexidade. É uma forma de visualizar algo sem se “apegar aos detalhes”.
Abstração • Focalizar o objeto em si e ignorar propriedades complementares… Figura 4: Abstração (AERONAVE) Figura 5: Abstração (VEICULO)
ClassesExemplos de Classes • Professor: • Atributos: Nome, Matrícula, Data de Contratação, Titulação • Operações: DefineNome(), AlteraNome(), TempoServiço(), DefineTitulação(), AlteraTitulação(), ... • Turma: • Atributos: Cod, Nome, Local, Créditos, Horário, Capacidade • Operações: DefineCod(),AlteraCod(),DefineNome(), AlteraNome(), NrCreditos(), AdicionaAluno(), EliminaAluno(), VerificaEstado(), ...
ClassesNomeando Classes • Uma classe deveria ser um substantivo singular que melhor caracteriza a abstração • Dificuldades na nomeação das classes podem indicar abstrações mal definidas • Nomes deveriam surgir diretamente do domínio do problema
ClassesEstilo para Nomear Classes • Uma proposta simples: • Classes são nomeadas com um substantivo no singular • O nome de uma classe inicia com a primeira letra maiúscula • Não são utilizados símbolos de sublinhado (“_”) - nomes compostos de múltiplas palavras são organizados com todas as palavras juntas, onde a primeira letra de cada uma fica em maiúscula • Exemplos: Aluno, Professor, ControleAcademico
Representando Classes e ObjetosCompartimentos de uma Classe • Nome da classe • Atributos • Propriedades compartilhadas por todos os objetos de uma mesma classe • O conjunto dos valores dos atributos de um objeto, irão determinar o estado de um objeto • Operações • Estabelece o que os objetos de uma classe são capazes de fazer • Define o comportamento dos objetos de uma classe • A implementação de uma operação é chamada de “método”
Representando Classes e ObjetosMensagens • Uma mensagem é uma solicitação feita por um objeto “A” a um objeto “B”: • Como resultado desta solicitação, o objeto B irá modificar seu estado ou irá retornar algum valor • O conceito de mensagem está diretamente associado ao conceito de operação • A interação entre os objetos é feita através da troca de mensagens.
Representando Classes e ObjetosPrincipais Relacionamentos • Associação: conexão entre classes, quando um objeto está apto a se comunicar com outro • Agregação (especialização): especialização de uma associação onde um todo é relacionado com suas partes (relacionamento “parte-de” ou “contenção” • Generalização: é um relacionamento entre objetos de uma classe geral (superclasse) e objetos de classes mais específicas (subclasse). OBS.: Uma associação é usualmente um relacionamento bidirecional • Dado uma instância de Aluno, há um objeto Disciplina associado • Dado uma instância de Disciplina, há um objeto Aluno associado
Representando Classes e ObjetosPrincipais Relacionamentos Figura 7: Agregação (Especialização) Figura 6: Associação é um / é uma é um / é uma é um / é uma Figura 8: Generalização
Representando Classes e ObjetosPrincipais Relacionamentos • Encapsulamento: consiste na separação de aspectos internos e externos de um objeto. Este mecanismo é utilizado amplamente para impedir o acesso direto ao estado de um objeto (seus atributos), disponibilizando externamente apenas os métodos que alteram estes estados. Exemplo: você não precisa conhecer os detalhes dos circuitos de um telefone para utilizá-lo. A carcaça do telefone encapsula esses detalhes, provendo a você uma interface mais amigável (os botões, o monofone e os sinais de tom). • Polimorfismo: permite que uma referência de um tipo de uma super-classe tenha seu comportamento alterado de acordo com a instância da classe filha a ela associada. O polimorfismo permite a criação de super-classes abstratas, ou seja, com métodos definidos (declarados) e não implementados, onde a implementação ocorre somente nas sub-classes não abstratas.
Tipos de AssociaçõesNomeando uma Associação • Uma associação precisa ser nomeada • O nome é representado como um “rótulo” colocado ao longo da linha de associação • Um nome de associação é usualmente um verbo ou uma frase verbal Por exemplo: Uma pessoa usa um telefone ??? A tecla "1" é parte de um telefone ??? Um telefone pode ser comercial ou particular ???
Questões de concursos • (TCM RJ) No contexto de Orientação a Objetos, o conjunto de objetos que têm a mesma estrutura e o mesmo comportamento é denominado: • Classe b) Herança c) Polimorfismo d) Encapsulamento • (Eletrobrás) Em relação à tecnologia de orientação a objetos, a afirmativa de que o estado de um objeto não deve ser acessado diretamente, mas sim por intermédio de métodos de acesso (ou propriedades) está diretamente relacionada ao conceito de: a) Herança b) Interface c) Classe d) Polimorfismo e) Encapsulamento • (Eletrobrás) Considere as seguintes assertivas sobre o modelo de classes mostrado abaixo (notação UML padrão) I – Um objeto livro pode ser associado a mais de um objeto leitor II – Um objeto leitor está associado a no máximo um único objeto livro III – Nenhum objeto empréstimo está associado a uma associação entre livro e leitores As assertivas corretas são: a) Somente o item I; b) Somente o item II; c) Somente o item III; d) Somente os itens I e II; e) Itens I, II e III. 4. (UFF Analista TI-2009). Analise as seguintes sentenças em relação à orientação a objetos: I – As classes possuem atributos e métodos II – Na orientação a objetos existem dois tipos de métodos: herança e polimorfismo. III – Podem ser criadas classes a partir de objetos criados que, por sua vez, irão receber por herança os atributos e métodos da superclasse. Das sentenças acima: a) Todas são verdadeiras b) apenas a I e II são veradadeiras c) apenas II e III são verdadeiras d) apenas I é verdadeira.
Questões de concursos • (TRE-BA Analista Judiciário TI) Todo objeto tem um identificador único que varia com o tempo de vida do objeto: a)Certo b) Errado • (TRE-BA Analista Judiciário TI) O estado de um objeto é definido pelo conjunto de valores de suas propriedades: a) Certo b) Errado • (SIMULADO FORUM Concurseiros) Analise: Na figura ao lado, que é a representação da classe de objetos, os elementos x,y e z, sem outros méritos, descrevem, respectivamente : • os atributos da classe, o nome da classe e as operações da classe. • o nome da classe, os atributos da classe e as operações da classe. • o nome da classe, as operações da classe e os atributos da classe. • as operações da classe, o nome da classe e os atributos da classe. • os atributos da classe, as operações da classe e o nome da classe. • (SIMULADO FORUM Concurseiros) Em orientação a objetos: • objetos com estrutura e comportamento diferentes são agrupados em classes. • dois objetos são distintos mesmo que eles apresentem exatamente as mesmas características. • o comportamento de um objeto é representado pelo conjunto de operações que podem ser executadas sobre o objeto. • dois objetos são distintos somente se todas as suas características forem diferentes. • a estrutura de um objeto não pode se representada em termos de atributos. • (SIMULADO FORUM Concurseiros) Em relação aos princípios da orientação a objetos, a separação dos aspectos externos de um objeto, acessíveis por outros, dos detalhes internos da implementação que ficam ocultos dos demais, é uma característica conhecida por: • Polimorfismo. b) Compartilhamento. c) Encapsulamento. d) Herança. e) Classes. 10. (EMPREL 2007) Analise as seguintes afirmações sobre Programação Orientada a Objetos. I. Uma classe define propriedades e comportamentos, ou seja, atributos e métodos, que objetos de determinado tipo possuem. II. De um modo geral, cada classe define um novo tipo que pode ser utilizado no programa. III. Algumas linguagens orientadas a objetos permitem a criação de objetos, sem estarem associados a uma classe específica. Assinale a alternativa que contém a(s) afirmação(ões) CORRETA(S). a) Apenas I. b) Apenas I e II. c) Apenas II. d) Apenas II e III. e) Apenas III.
Trabalho em Aula • Monte uma apresentação em Power Point mostrando: • Título da apresentação (nome, assunto…) • O que você entendeu por Orientação a Objetos? • Exemplos (3 de cada) de: • Classes • Objetos • Atributos • O que você entendeu por associação? • O que significa Instanciar uma classe? Como fazer isso? • Procure na Internet e inclua na apresentação 5 exemplos de Linguagens de Programação (atuais) que utilizam Orientação a Objetos? (1 slide) (1 slide) (de 1 a 3 slides) (1 slide) (1 slide) (1 slide) (1 slide)
Encapsulamento • Num dado objeto somente interessa ao cliente as funções que ele executa e não a implementação da mesma. • Se precisarmos mudar o valor de alguma variável de instância de um objeto, devemos enviar uma mensagem que recebe um valor como argumento e faz a alteração. • As palavras encapsular e esconder são termos técnicos da definição de linguagens orientadas a objeto. • Um bom exemplo de encapsulamento seria um disco rígido. A interface do disco rígido deixa acessível ao computador (cliente) suas funções de leitura e escrita, os dispositivos mecânicos e eletromagnéticos que o HD utiliza para realizar tais operações não fica acessível ao seu cliente estando assim encapsulados. • Por Exemplo a “Caixa preta” – não é necessário saber como funciona internamente, mas apenas como saber utilizar.
Herança • A herança é a principal característica da programação orientada a objetos pois é através desse mecanismo que a classe mais especializada herda todos os métodos e atributos da classe mais geral. • Permite que uma nova classe seja descrita a partir de uma outra classe já existente (reutilização); • Herança é um mecanismo que permite que características comuns a diversas classes sejam fatoradas em uma classe base, ou superclasse. A partir de uma classe base, outras classes podem ser especificadas. Cada classe derivada ou subclasse apresenta as características (estrutura e métodos) da classe base e acrescenta a elas o que for definido de particularidade para ela.
Polimorfismo • De forma genérica, polimorfismo significa "várias formas". • É a capacidade de objetos diferentes reagirem segundo a sua função a uma ordem padrão. • Por exemplo: O comando "abre", por exemplo, faz um objeto entrar em ação, seja ele uma janela, uma porta ou uma tampa de garrafa.
Referências Bibliográficas • Leendert Ammeraal, "Programas e Estruturas de Dados em C", Editora Presença, 1994 • Programming Languages: Concepts and Constructs, Addison-Wesley, 1996. • Ciência da Computação: uma visão abrangente, J. Glenn Brookshear, 2005. • B. Kernighan, R. Pike, The Practice of Programming, Addison Wesley, 1999 • Wikipedia – enciclopedia online. Disponível em: http://pt.wikipedia.org/wiki/Paradigma. Acesso em Janeiro/2006.