Baixe o app para aproveitar ainda mais
Prévia do material em texto
Aula 2 Conceitos de Orientação a Objetos Prof. Johnny V. Tafur jtafur@unicarioca.edu.br Orientação a Objetos em Java • O ser humano se relaciona com o mundo através do conceito de objetos. • Estamos sempre identificando qualquer objeto ao nosso redor. • Para isso lhe damos nomes, e de acordo com suas características lhes classificamos em grupos, ou seja, classes. Orientação a Objetos em Java • Conceitos: – Identidade. – Classificação. – Hereditariedade. – Encapsulamento. – Polimorfismo. – Ligação Dinâmica. Orientação a Objetos em Java Classe Aluno Nome Matrícula Nota Média João 193.31.098-7 7,6 Maria 195.31.022-5 8,7 Orientação a Objetos em Java • Objetos do mundo real possuem duas características: estado e comportamento. • Exemplos: cachorros estado: nome, cor, raça comportamento: latir, correr Bicicletas estado: marcha atual, velocidade atual comportamento: trocar marcha, aplicar freios Orientação a Objetos em Java • Identificar o estado e o comportamento de objetos do mundo real é o primeiro passo para começar a pensar em programação OO. • Observe um objeto e pergunte: Quais os possíveis estados que esse objeto pode estar? Quais os possíveis comportamentos que ele pode executar? Orientação a Objetos em Java • A unidade fundamental de programação em orientação a objetos (POO) é a classe. • Classes contém: – Atributos: determinam o estado do objeto; – Métodos: semelhantes a procedimentos em linguagens convencionais, são utilizados para manipular os atributos(operações). Orientação a Objetos em Java • As classes provêem a estrutura para a construção de objetos - estes são ditos instâncias das classes Classe Aluno Nome Matrícula Nota Média setNome(nome) getNome() ... atributos métodos Instâncias João 193.31.098-7 7,6 Maria 195.31.022-5 8,7 Orientação a Objetos em Java • Objetos – São instâncias da classe. – Sob o ponto de vista da programação orientada a objetos, um objeto não é muito diferente de uma variável normal. • Um programa orientado a objetos é composto por um conjunto de objetos que interagem entre si Orientação a Objetos em Java • Objetos – Objetos de software são conceitualmente similares a objetos do mundo real: eles consistem do estado e o comportamento relacionado. – Um objeto armazena seu estado em campos (variáveis) e expõe seu comportamento através de métodos (funções). – Encapsulamento: princípio de projeto pelo qual cada componente de um programa deve agregar toda a informação relevante para sua manipulação como uma unidade (uma cápsula). – Ocultação da Informação: princípio pelo qual cada componente deve manter oculta sob sua guarda uma decisão de projeto única. Para a utilização desse componente, apenas o mínimo necessário para sua operação deve ser revelado (tornado público) Orientação a Objetos em Java Bicicleta Marcha atual Velocidade atual mudarMarcha() mudarVelocidade() ... campos (atributos) métodos Instâncias 3ª 20 km/h Bibicleta A 7ª 35 km/h Bibicleta B Orientação a Objetos em Java Bibicleta B 7º 35 km/h Métodos operam no estado interno de um objeto e servem como mecanismo de comunicação entre objetos. João João 30 anos mudarMarcha Orientação a Objetos em Java – Classes x Objetos Documento Autor DataDeChegada Imprimir Editar OB1: Documento OB2: Documento CLASSE Atributos Funções Orientação a Objetos em Java – Classe em Java Qualificador_de_acesso class Nome_Da_Classe { // atributos da classe // métodos da classe } // Class Lampada public class Lampada { // Atributos boolean acesa; // Métodos public void ligar() { acesa = true; } public void desligar() { acesa = false; } } Orientação a Objetos em Java – Classe em Java class Bicicleta { int velocidade = 0; int marcha = 1; void mudarMarcha(int novoValor) { marcha = novoValor; } void aumentarVelocidade(int incremento) { velocidade = velocidade + incremento; } void aplicarFreios(int decremento) { velocidade = velocidade - decremento; } } Orientação a Objetos em Java – Criando objetos com Java • Para instanciarmos um novo objeto devemos utilizar o operador new, conforme modelo abaixo: NomeDaClasse nomeDoObjeto = new NomeDaClasse(); Lampada lamp1 = new Lampada(); Lampada lamp2 = new Lampada(); • Criando dois objetos bicicleta: Bicicleta bicicleta1 = new Bicicleta(); Bicicleta bicicleta2 = new Bicicleta(); • Invocando seus métodos: bicicleta1.mudarMarcha(2); bicicleta2.aumentaVelocidade(5); Orientação a Objetos em Java – Resumo • A classe provê a estrutura para a construção de objetos. • Um objeto é uma instância de uma classe. Ele contém um estado (valores de seus atributos) e expõe o seu comportamento através de métodos (funções). • Ex. Bicicleta: ESTADO – valores dos atributos velocidade e marcha; COMPORTAMENTO – exposto pelos métodos mudarMarcha, aumentarVelocidade e aplicarFreios. Orientação a Objetos em Java – Resumo • É um princípio fundamental da OO: – Esconder o estado interno (valores dos atributos). – Obrigar que interações com os atributos sejam executadas através de métodos. • Com o encapsulamento um objeto determina a permissão que outros objetos terão para acessar seus atributos (estado). Orientação a Objetos em Java – Encapsulamento dos Dados Proteger os atributos Permitir acesso aos atributos através dos métodos Exemplo (classe ContaBancária) Associações • Para representar o fato de que objetos podem se relacionar uns com os outros, utilizamos associações. • Uma associação representa relacionamentos (ligações) que são formados entre objetos durante a execução do sistema. • Note que, embora as associações sejam representadas entre classes do diagrama, tais associações representam ligações possíveis entre os objetos das classes envolvidas. Notação para Associações • Na UML associações são representadas por uma linha que liga as classes cujos objetos se relacionam. • Exemplos: Multiplicidades • Representam a informação dos limites inferior e superior da quantidade de objetos aos quais outro objeto pode se associar. • Cada associação em um diagrama de classes possui duas multiplicidades, uma em cada extremo da linha de associação. Exemplos (Multiplicidades) • Exemplo • Pode haver um cliente que esteja associado a vários pedidos. • Pode haver um cliente que não esteja associado a pedido algum. • Um pedido está associado a um, e somente um, cliente. Exemplos (Multiplicidades) • Exemplo • Uma corrida está associada a, no mínimo, dois velocistas • Uma corrida está associada a, no máximo, seis velocistas. • Um velocista pode estar associado a várias corridas. Acessórios para Associações • Para melhor esclarecer o significado de uma associação no diagrama de classes, a UML define três recursos de notação: • Nome da associação: fornece algum significado semântico a mesma. • Direção de leitura: indica como a associação deve ser lida • Papel: para representar um papel específico em uma associação. Classe associativa • É uma classe que está ligada a uma associação, em vez de estar ligada a outras classes. • É normalmente necessária quando duas ou mais classes estão associadas, e é necessário manter informações sobre esta associação. • Uma classe associativa pode estar ligada a associações de qualquer tipo de conectividade. • Sinônimo: classe deassociação Notação para Classes Associativas • Notação é semelhante à utilizada para classes ordinárias. A diferença é que esta classe é ligada a uma associação por uma linha tracejada. • Exemplo: para cada par de objetos [pessoa, empresa], há duas informações associadas: salário e data de contratação. Associações n-árias • Define-se o grau de uma associação como a quantidade de classes envolvidas na mesma. • Na notação da UML, as linhas de uma associação n-ária se interceptam em um losango. • Na grande maioria dos casos práticos de modelagem, as associações normalmente são binárias. • Quando o grau de uma associação é igual a três, dizemos que a mesma é ternária. • Uma associação ternária são uma caso mais comum (menos raro) de associação n-ária (n = 3). Exemplo (associação ternária) • Na notação da UML, as linhas de uma associação n-ária se interceptam em um losango nomeado. • Notação similar ao do Modelo de Entidades e Relacionamentos Associações reflexivas • Tipo especial de associação que representa ligações entre objetos que pertencem a uma mesma classe. • Não indica que um objeto se associa a ele próprio. • Quando se usa associações reflexivas, a definição de papéis é importante para evitar ambiguidades na leitura da associação. • Cada objeto tem um papel distinto na associação. Agregações e Composições • A semântica de uma associação corresponde ao seu significado, ou seja, à natureza conceitual da relação que existe entre os objetos que participam daquela associação. • De todos os significados diferentes que uma associação pode ter, há uma categoria especial de significados, que representa relações todo-parte. • Uma relação todo-parte entre dois objetos indica que um dos objetos está contido no outro. Podemos também dizer que um objeto contém o outro. • A UML define dois tipos de relacionamentos todo-parte, a agregação e a composição. Agregações e Composições • Algumas particularidades das agregações/composições: • são assimétricas, no sentido de que, se um objeto A é parte de um objeto B, o objeto B não pode ser parte do objeto A. • propagam comportamento, no sentido de que um comportamento que se aplica a um todo automaticamente se aplica às suas partes. • as partes são normalmente criadas e destruídas pelo todo. Na classe do objeto todo, são definidas operações para adicionar e remover as partes. • Se uma das perguntas a seguir for respondida com um sim, provavelmente há uma agregação onde X é todo e Y é parte. • X tem um ou mais Y? • Y é parte de X? Agregações e Composições Uma equipe é formado por Jogadores, ou seja, os Jogadores são parte integrante de uma Equipe, mas os Jogadores existem independentemente da equipe existir. Nesse caso, chamamos esse relacionamento de AGREGAÇÃO. Agregações e Composições • As diferenças entre a agregação e composição não são bem definidas. A seguir, as diferenças mais marcantes entre elas. • Destruição de objetos • Na agregação, a destruição de um objeto todo não implica necessariamente na destruição do objeto parte. • Pertinência • Na composição, os objetos parte pertencem a um único todo. • Por essa razão, a composição é também denominada agregação não compartilhada. • Em uma agregação, pode ser que um mesmo objeto participe como componente de vários outros objetos. • Por essa razão, a agregação é também denominada agregação compartilhada. Conceitos de Orientação a Objetos
Compartilhar