Universidade Federal de Mato Grosso do Sul. Propriedades da Programação Orientada a Objetos
|
|
- Thalita Corte-Real Neves
- 7 Há anos
- Visualizações:
Transcrição
1 Universidade Federal de Mato Grosso do Sul Facom - Faculdade de Computação Linguagem de Programação Orientada a Objetos Prof. Me. Liana Duenha Propriedades da Programação Orientada a Objetos Neste tópico da disciplina, abordaremos as principais propriedades da programação orientada a objetos. Esse material é baseado nas notas de aula dos professores Paulo Pagliosa e Anderson Bessa, e livro texto How To Program (Deitel). 1 Encapsulamento Encapsular significa esconder, na definição da classe, os membros que representam a estrutura e o comportamento interno dos objetos da classe. Geralmente, são escondidos todos os atributos, enquanto os métodos são tornados públicos. Entretanto, podese esconder também os métodos, bem como tornar públicos alguns atributos; tudo depende das suas decisões de projeto e do bom senso. Esconder um membro em C++ significa declará-lo na seção privada (definida pela palavra reservada private) ou protegida (definida por protected) da classe. Um membro privado só pode ser acessado em métodos da classe onde foi declarado. Um membro protegido pode ser acessado por métodos da própria classe e de classes derivadas publicamente, direta ou indiretamente, da classe onde foi declarado. Membros declarados na seção pública (definida pela palavra reservada public) da classe, podem ser acessados por quaisquer métodos e definem a interface da classe. O acesso a um atributo privado ou protegido só pode ser efetuado de forma indireta, por meio de métodos declarados na classe chamados setters e getters. Um setter é utilizado para atribuição de um novo valor para um atributo, enquanto um getter é utilizado para obtenção do valor corrente do atributo. Um atributo para o qual há um getter e/ou um setter é uma propriedade do objeto. Embora aconselhável esconder um atributo, seu acesso por getters ou setters, além em do acréscimo de métodos na interface da classe, pode adicionar ineficiência a um programa. Em C++, tal ineficiência é evitada com o uso de métodos inline. Em uma mensagem na qual um método inline é acoplado, não há o overhead de uma chamada de função; ao invés disso, o corpo do méetodo é expandido em linha no local da mensagem. Com isso, o código gerado fica maior, dependendo do tamanho do corpo do método, como visto anteriormente. Como exemplo, podemos utilizar a classe DoubleList modelada em sala de aula. Um objeto desta classe possui um atributo chamado numberofnodes. Esse atributo 1
2 não pode ser acessado ou modificado diretamente por métodos ou funções que não sejam da classe DoubleList. Contudo, é útil para o usuário saber o valor desse atributo; sendo assim, podemos definir um método público getter que retorna uma cópia do valor desse atributo para o usuário, da seguinte maneira: template <typename T> inline int DoubleList<T>::size() const return numberofnodes; Métodos setter normalmente servem para validar os valores antes de aplicar modificações em atributos do objeto. Por exemplo, antes da atribuição de um valor arbitrário ao campo info do objeto, podemos usar um método setter e uma função de validação (no exemplo, isvalid) para evitar erros: template <typename T> inline int DoubleNode<T>::setInfo(T value) if (isvalid(value)) info = value; As vantagens do encapsulamento são: Melhor organização do código. Segurança: atributos encapsulados não podem ter seus valores inadvertida ou maliciosamente modificados por métodos que não têm acesso aos atributos. Manutenibilidade: alterações na estrutura de dados e em métodos encapsulados de uma classe não são refletidas nos métodos de outros objetos usuários da classe (a não ser que essas alterações modifiquem a interface da classe). Há situações em que certos membros privados ou protegidos de objetos de uma classe A devem ser acessados não por métodos quaisquer, mas somente por métodos acoplados a mensagens cujos receptores são objetos de uma classe B. Casos assim podem ocorrer quando há um relacionamento forte entre objetos das classes A e B. Nestas circunstâncias, a classe A pode declarar que a classe B é sua amiga, o que significa que métodos executados por objetos de B podem acessar membros protegidos ou privados de objetos de A. 2
3 Um método friend de uma classe é definido fora do escopo dessa classe, ainda que tenha o direito de acessar membros não-public (e public) da classe. Funções independentes ou classe inteiras podem ser declaradas como friends de outras classes. Para declarar um método method ou função como friend de uma classe, preceda o protótipo de função na definição de classe com a palavra-chave friend. class Class1 friend void method(); private: Para declarar todas as funções-membro da classe Class2 como amigas da classe Class1, inclua na definição da classe Class1 uma declaração na forma class Class1 friend class Class2; private: É considerada uma boa prática de programação que as classes friend sejam declaradas logo no início do corpo de definição de uma classe, sem a necessidade de precedê-las com especificadores de acesso (public, private,etc). 2 Herança Herança é o mecanismo através do qual um objeto de uma classe Y herda todos os membros de uma classe X. A classe X e chamada superclasse (ou classe base, em C++) e a classe Y é chamada subclasse (ou em C++). Uma classe base representa uma generalização; uma representa uma especialização. C++ admite herança múltipla, isto é, uma classe pode ser derivada de duas ou mais classes-base. Há várias maneiras de uma especializar uma classe base: 3
4 Adicionando novos métodos e/ou atributos; Redefinindo a implementação de métodos da classe base; Não fazendo nada. O grande benefício da herança é a reutilização de código, o que evita a replicação e pode, mas nem sempre, facilitar a manutenção, desde que alterações ou extensões sejam feitas somente em nas classes bases. Como exemplo, considere a classe Employee definida abaixo. Essa classe representa um funcionário de uma empresa e possui os atributos firstname, lastname e cpf. Além dos métodos públicos getters e setters, essa classe possui um método de impressão dos atributos ou propriedades dos objetos desta classe (método print()). class Employee Employee(const string &first, const string &last, const string &cpf) setfirstname(first); setlastname(last); setcpf(cpf); ; ~Employee(); void setfirstname(const string &); string getfirstname() const; void setlastname(const string &); string getlastname() const; void setcpf(const string &); string getcpf() const; void print() const; private: string firstname; //nome string lastname; // sobrenome string cpf; // cpf A classe CommissionEmployee é definida abaixo como de Employee, e assim, uma instância da classe CommissionEmployee é um objeto Employee e herda todos os seus membros não privados. 4
5 class CommissionEmployee : public Employee CommissionEmployee (const string &first, const string &last, const string &c, do :Employee(first,last,c) setgrosssales( sales ); setcommissionrate( rate ); ~CommissionEmployee(); void setgrosssales( double ); double getgrosssales() const; void setcommissionrate( double ); double getcommissionrate() const; double earnings() const; void print() const; private: double grosssales; // vendas brutas semanais double commissionrate; // porcentagem da comiss~ao ; // fim da classe CommissionEmployee O construtor de CommissionEmployee recebe todos argumentos necessários para inicilialização dos seus atributos (próprios e herdados), invoca explicitamente o construtor de Employee passando os parãmetros corretos para inicialização de firstname, lastname e cpf, e finaliza como a inicialização dos atributos grosssales e commissionrate. O método earnings() é responsável por calcular os rendimentos semanais do funcionário comissionado, levando em consideração o valor de vendas brutas (grosssales) e taxa de comissão (comissionrate). Segue abaixo um exemplo de instanciação e utilização de objetos da classe CommissionEmployee e Employee: // Instancia um objeto Employee Employee emp ("Joao", "da Silva", " "); // Instancia um objeto CommissionEmployee CommissionEmployee comemp ("Camila", "Miranda", " ", 10000, 0.06); Employee *empptr = &emp; // empptr aponta para objeto Employee Employee *comempptr = &emp; // comempptr aponta para objeto comempptr que // também é um Employee 5
6 emp.print(); // método print() da classe Employee será executado comemp.print(); // método print() da classe CommissionEmployee será executado 2.1 Tipos de Herança Ao derivar uma classe de uma classe base, os membros da classe base podem ser herdados pela herança public, private ou protected. O tipo de herança define a acessibilidade de membros da classe base pela. O mais comum é o uso de herança public, já exemplificada nesse material. Os tipos de herança private e protected são usados raramente e deve ser implementados com critério. A tabela 2.1 resume as regras de acessibilidade de membros da classe base pela, considerando diferentes tipos de herança. Especificador de Herança public acesso de membro da classe base public public na classe derivada protected protected na private private na Herança protected protected na protected na private na Herança private private na private na private na Tabela 1: Tipos de herança e acessibilidade de membros 3 Polimorfismo Polimorfismo descreve a capacidade de um código de programação comportar-se de diversas formas dependendo do contexto. Uma das formas mais simples de polimorfismo é permiteir que operadores ou métodos com o mesmo nome implementem várias operações distintas ou a mesma operação sobre dados de tipos distintos. Em C++, por exemplo, o operador + é usado para adição de dois inteiros, de dois reais, de um real e um inteiro, etc. Em Java, o operador também é usado para concatenação de strings. Esse tipo simples de polimorfismo é baseado em sobrecarga. Em C++, é possível a sobrecarga de operadores, ou seja, a definição de funções cujo nome simples é dado pela palavra reservada operator seguida do símbolo do operador (os argumentos da função devem ser compatíveis com o número e tipo de argumentos exigidos pelo operador), conforme visto anteriormente. Assim, pode-se escrever, para uma classe X qualquer: 6
7 X operator +(const X&, const X&); Com isso, o operador + passa a ser usado também para a adição de dois objetos da classe X: X x1; X x2; X x3; x3 = x1 + x2; // ou x3 = operator +(x1, x2); No caso de polimorfismo envolvendo funções que não sejam operadores, podemse ter funções ou métodos com o mesmo identificador, mas que são diferenciados pelo número e/ou tipo dos parâmetros. Considere o exemplo abaixo. Na classe A, há quatro versões do método f(), porém o compilador pode distingui-las pelo número e tipo dos parâmetros e/ou tipos de retorno. class A int a; int f(); void f(int); void f(int, float); int f(float, int); ; Nesse exemplo, os métodos acoplados às respectivas mensagens são determinado em tempo de compilação em função do número e/ou tipo da mensagem. Quando o acoplamento mensagem/método é resolvido em tempo de compilação, é chamado acoplamento estático, vinculação estática ou jução anterior. 4 Vinculação/Acoplamento estático x dinâmico Em C++, para mensagens enviadas a objetos criados estaticamente, o acoplamento sempre será estático. Considere novamente os exemplos utilizando as classes Employee e ComissionEmployee. Os métodos print() foram executados em resposta à mensagem enviada a um objeto criado estaticamente. Isto quer dizer que o compilador 7
8 decide qual método deve ser executado em resposta à invocação realizada baseado no tipo do objeto. Embora o método print() tenha sido definido tanto em Employee quanto em CommisionEmployee, emp.print() acarretará a execução do método print definido na classe Employee e comemp.print() acarretará a execução do método print definido na classe CommissionEmployee. O mesmo não ocorre quando uma mensagem é enviada a um objeto através de um ponteiro (ou referência). Em C++, um ponteiro (ou referência) para uma classe base pode receber o endereço (referência) de um objeto desta classe ou de qualquer classe que dela deriva, direta ou indiretamente. Assim, no código abaixo, pode-se perguntar qual método será acoplado à mensagem, uma vez que o ponteiro ptr pode receber o endereço de um objeto da classe Employee, da classe CommissionEmployee ou de qualquer outra que derive de Employee. Nesse exemplo, como o ponteiro ptr foi definido como um ponteiro para objetos da classe Employee, o método print() de Employee será executado, mesmo que o objeto para o qual ptr aponta seja um objeto CommissionEmployee. CommissionEmployee comemp ("Camila", "Miranda", " ", 10000, 0.06); Employee *ptr = &comemp; // ptr aponta para objeto Employee ptr -> print(); // método print() da classe Employee será executado Na maioria das vezes em que usamos ponteiros para manipular objetos, desejamos que a escolha do método a ser executado seja realizada em tempo de execução (e não em tempo de compilação). Isso é chamado acoplamento dinâmico, vinculação dinâmica ou junção posterior. Para determinar que a vinculação seja dinâmica, devemos definir os métodos Employee::print() e CommissionEmployee::print() como métodos virtual. Se o método for virtual, então o método a ser acoplado a mensagem será aquele da classe do objeto cujo endereço, em tempo de execução, for atribuído ao ponteiro ptr. Em uma, a redefinição de um método não virtual herdado de uma classe base esconde o método da classe base. A redefinição de um método virtual em uma sobrepõe o método da base. Note a diferença: métodos com o mesmo nome mas parâmetros diferentes declarados na mesma classe são métodos sobrecarregados, enquanto que métodos declarados em uma com o mesmo nome, mesmos parâmetros e mesmo tipo de retorno de méetodos herdados de uma classe base sã métodos redefinidos. Um método redefinido sobrepõe ou esconde o método da base. Métodos definidos como virtual permitem acoplamento dinâamico. Acoplamento dinâmico tem um custo em termos de eficiência. Em C++, a jução posterior é implementada através de tabelas de ponteiros de métodos virtuais. Toda classe que tiver declarado pelo menos um método virtual terá associada uma tabela cujas entradas serao os endereços do código de cada um dos métodos virtuais 8
9 declarados na classe. Todo método virtual possui como atributo um índice para a entrada correspondente na tabela de ponteiros de métodos virtuais (TPMV) de sua classe. A TPMV de uma copia a TPMV da classe base, ajustando as entradas para apontar para aqueles métodos que foram sobrepostos e adicionando novas entradas se novos métodos virtuais forem declarados na. Um método abstrato ou virtual puro é um método virtual que não será implementado na classe onde foi definido. Um método que tenha =0 no final da sua declaração na classe é um método virtual puro. Uma classe que declare pelo menos um método virtual puro é uma classe abstrata. Uma classe abstrata não admite instância. Uma de uma classe base abstrata não será abstrata se sobrecarregar os métodos abstratos herdados da base (e não declarar novos métodos abstratos). Vamos modificar o nosso exemplo de tal forma a tornar a classe Employee uma classe abstrata. Vamos declarar o método earnings() como virtual puro na clase base (Employee), e sobrecarregá-lo na (CommissionEmployee). O método print() de Employee não será declarado como virtual puro na classe base pois desejamos manter sua implementação, mas será declarado como virtual para garantir sua vinculação em tempo de execução. // classe abstrata pois contém um método virtual puro class Employee virtual double earnings() const = 0; // virtual puro virtual void print() const; // virtual ; class CommissionEmployee : public Employee virtual double earnings() const; // virtual virtal void print() const; // virtual ; 9
BCC Programação Orientada a Objectos(POO) Departamento de Computação - UFOP Baseado nos slides do Prof. Marco Antônio Carvalho
Herança BCC 221 - Programação Orientada a Objectos(POO) Guillermo Cámara-Chávez Departamento de Computação - UFOP Baseado nos slides do Prof. Marco Antônio Carvalho Introdução I A herança é uma forma de
Leia maisConceitos de Programação Orientada a Objetos
Conceitos de Programação Orientada a Objetos Tatyana Bitencourt Com as técnicas de orientação a objeto, é possível obter resultados considerados impossíveis pensando de maneira estruturada. Como Java não
Leia maisClasses e Objetos. Sintaxe de classe em Java
Classes e Objetos Classes e Objetos A Programação Orientada a Objetos (POO) é uma técnica de programação que se baseia na construção de classes e utilização de objetos. Os objetos são formados por dados
Leia maisProgramação Orientada a Objetos para Redes de Computadores. Polimorfismo com Hierarquias de Herança. Exemplo: Hierarquia Animal
Programação Orientada a Objetos para Redes de Computadores Prof. Miguel Elias Mitre Campista http://www.gta.ufrj.br/~miguel PARTE 2 Programação em C++ - Polimorfismo Polimorfismo com Hierarquias de Herança
Leia maisProgramação Orientada a Objetos para Redes de Computadores
Programação Orientada a Objetos para Redes de Computadores Prof. Miguel Elias Mitre Campista http://www.gta.ufrj.br/~miguel PARTE 2 Programação em C++ - Herança Herança Criação de uma nova classe de uma
Leia maisLaboratório de programação II
Laboratório de programação II Herança e Polimorfismo Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno Herança Mecanismo da Orientação a Objeto que permite criar novas classes aproveitando
Leia maisLinguagens de Programação
Linguagens de Programação Prof. Miguel Elias Mitre Campista http://www.gta.ufrj.br/~miguel Parte IV Introdução à Programação em C++ (Continuação) Relembrando da Última Aula... Sobrecarga de operadores
Leia maisJava para Desktop. Programação Orientada à Objetos 2 JSE
Java para Desktop Programação Orientada à Objetos 2 JSE Encapsulamento significa "ocultar informações, ele define que cada objeto contém todos os detalhes de implementação necessários sobre como ele funciona
Leia maisProgramação Orientada a Objetos para Redes de Computadores
Programação Orientada a Objetos para Redes de Computadores Prof. Miguel Elias Mitre Campista http://www.gta.ufrj.br/~miguel PARTE 2 Programação em C++ - Polimorfismo Polimorfismo com Hierarquias Polimorfismo
Leia maisIntrodução à Programação. Encapsulamento e Herança
Introdução à Programação Encapsulamento e Herança Tópicos da Aula Hoje, aprenderemos conceitos mais avançados de Orientação a Objetos Encapsulamento Usando modificadores de acesso em C++ Herança Importância
Leia maisParadigmas de Linguagens de Programação. Suporte para Programação Orientada a Objeto
Suporte para Programação Orientada a Objeto Cristiano Lehrer Categoria das Linguagens que Suportam POO Suporte a POO acrescentado a uma linguagem já existente: C++ (também suporta programação procedural
Leia maisProgramação Orientada a Objetos. Professor: André Luis Meneses Silva br.geocities.com/programacao2ufs
Programação Orientada a Objetos Professor: André Luis Meneses Silva andreluis.ms@gmail.com br.geocities.com/programacao2ufs [ Conteúdo ] Objeto Mensagens Classe Encapsulamento Visibilidade Membros de Instância
Leia maisHerança Tiago Eugenio de Melo
Herança Tiago Eugenio de Melo tiago@comunidadesol.org Herança Conceito: Herança é a capacidade de especializar tipos de objetos (classes), de forma que os tipos especializados contenham, além de características
Leia maisO PARADIGMA ORIENTADO POR OBJETOS
O PARADIGMA ORIENTADO POR OBJETOS A idéia básica do paradigma orientado a objetos é imaginar que programas simulam o mundo real: um mundo povoado de objetos. Dessa maneira, linguagens baseadas nos conceitos
Leia maisPOO e C++: Herança e Polimorfismo
POO e C++: Herança e Polimorfismo Márcio Santi Luiz Fernando Martha Conceito de Herança em POO Recurso que torna o conceito de classe mais poderoso; Permite que se construa e estenda continuamente classes
Leia maisProgramação por Objectos. Java
Programação por Objectos Java Parte 6: Herança e Polimorfismo LEEC@IST Java 1/50 Herança revisão (1) A herança é um mecanismo em que a subclasse constitui uma especialização da superclasse. A superclasse
Leia maisLinguagens de Programação
Linguagens de Programação Prof. Miguel Elias Mitre Campista http://www.gta.ufrj.br/~miguel Parte IV Introdução à Programação em C++ (Continuação) Relembrando da Última Aula... Polimorfismo Mais exemplos
Leia maisModelo do Mundo Real. Abstração. Interpretação
Modelo do Mundo Real Mundo Real Abstração Interpretação Sistema de Software Modelo Algoritmo Abstração: O modelo precisa capturar apenas as características do mundo real que são importantes para o sistema
Leia maisProgramação Java (nível intermediário) 4. Polimorfismo
Programação Java (nível intermediário) 4 Polimorfismo Introdução Uma linguagem orientada a objetos nos permite definir novos tipos para variáveis Nós definimos um novo tipo através de uma classe Este tipo
Leia maisOrientação a Objetos (OO) LPG II - Java. Orientação a Objetos (OO) Programação Orientada a Objetos. Programação Procedimental
Orientação a Objetos (OO) LPG II - Java Orientação a Objetos (OO) Roberto Vedoato vedoato@joinville.udesc.br Programação Procedimental x Orientada a Objetos Objetivos e Benefícios da Orientação a Objetos
Leia maisUNIVERSIDADE FEDERAL DE MATO GROSSO DO SUL SISTEMAS DE INFORMAÇÃO - CÂMPUS DE COXIM FUNDAMENTOS EM ORIENTAÇÃO A OBJETOS
Data final de entrega 16/09/2014, até às 23h59min Enviar o arquivo de respostas em formato PDF e o arquivozip com códigos fontes para o e-mail motafernandomaia@gmailcom, insira no assunto do e-mail [Lista
Leia maisCurso teórico: Orientação a Objetos. Matemática computacional Marcos Aurelio Wozhiak Jr webzhiak.com.br
Curso teórico: Orientação a Objetos Matemática computacional Marcos Aurelio Wozhiak Jr webzhiak.com.br Objetivos Conhecer os conceitos fundamentais de orientação a objetos; Aprender a criar e utilizar
Leia maisLinguagens de Programação Aula 12
Linguagens de Programação Aula 12 Celso Olivete Júnior olivete@fct.unesp.br Na aula passada Implementando subprogramas 2 Na aula de hoje Suporte para a programação orientada a objetos 3 Roteiro Introdução
Leia maisOrientação a Objetos (OO) Java Avançado Revisão do Paradigma de. Orientação a Objetos (OO) Programação Orientada a Objetos. Programação Procedimental
Orientação a Objetos (OO) Java Avançado Revisão do Paradigma de Orientação a Objetos (OO) Roberto Vedoato vedoato@joinville.udesc.br Programação Procedimental x Orientada a Objetos Objetivos e Benefícios
Leia maisProgramação aplicada de computadores Andréa Maria Pedrosa Valli
Universidade Federal do Espírito Santo Laboratório de Computação de Alto Desempenho - LCAD Programação aplicada de computadores Andréa Maria Pedrosa Valli 1 Classes Parte 4 1. Herança 2. Classes básicas
Leia maisLinguagem de Programação III
Linguagem de Programação III Aula-7 Reutilização de Classes Prof. Esbel Tomás Valero Orellana Até Aqui Introdução a POO e sua implementação em Java Atributos, métodos e encapsulamento dos mesmos Trabalhando
Leia maisDCC / ICEx / UFMG. Membros de Classes. Eduardo Figueiredo.
DCC / ICEx / UFMG Membros de Classes Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Membros de Uma Classe Construtor Métodos De classe De objeto Variáveis De classe De Objeto Constantes Construtores
Leia maisProgramação Orientada a Objetos HERANÇA E COMPOSIÇÃO
Programação Orientada a Objetos HERANÇA E COMPOSIÇÃO Renato Dourado Maia Universidade Estadual de Montes Claros Engenharia de Sistemas Unidade IV Unidade IV Herança e Composição: Herança simples. Composição.
Leia maisProgramação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos
Programação Orientada a Objetos Vagner Luz do Carmo - Vluzrmos Questão 1 Dada a seguinte classe na linguagem JAVA: public class Carro { public String retornacor(){ ; return Azul ; private String retornachassi(){
Leia maisProgramação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação
4 Conceito de Herança Hierarquia de classes e mecanismo de ligação Herança Uma classe pode herdar operações de uma superclasse e as suas operações podem ser herdadas por subclasses. O mecanismo de herança
Leia maisINF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS
INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS Departamento de Informática PUC-Rio Ivan Mathias Filho ivan@inf.puc-rio.br Programa Capítulo 3 Ponteiros e Variáveis de Objeto Construtores e Blocos de Inicialização
Leia maisProgramação Avançada C++ Slide 12 Nielsen Castelo Damasceno
Programação Avançada C++ Slide 12 Nielsen Castelo Damasceno Visibilidade de membros Membro da classe derivada pode usar os membros públicos ( public ) e protegidos ( protected ) da sua classe base (como
Leia maisLinguagem de Programação Orientada a Objeto Abstração - Encapsulamento
Linguagem de Programação Orientada a Objeto Abstração - Encapsulamento Professora Sheila Cáceres Variáveis locais Campos são um tipo de variável. Eles: armazenam valores por toda a vida de um objeto; e
Leia maisINF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS
INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS Departamento de Informática PUC-Rio Andrew Diniz da Costa andrew@les.inf.puc-rio.br Programa Capítulo 3 Ponteiros e Variáveis de Objeto Construtores
Leia maisC com introdução a OO
... Centro Integrado de Tecnologia da Informação C com introdução a OO ... Centro Integrado de Tecnologia da Informação Aula 9 Ronald Dener - Instrutor Matheus Soares - Monitor 17 / outubro 17 / outubro
Leia maisLista 05 Herança. public class PessoaFisica extends Pessoa { private String RG; public PessoaFisica(){ super(); } public String getrg(){ return RG; }
Lista 05 Herança 1. Analisando a classe Java abaixo podemos observar que a mesma possui apenas um atributo, um construtor e dois métodos. Perceba que dentro do método main estão sendo invocados métodos
Leia mais4 Conceito de Herança
4 Conceito de Herança Hierarquia de classes e mecanismo de ligação Herança Uma classe pode herdar operações de uma superclasse e as suas operações podem ser herdadas por subclasses. O mecanismo de herança
Leia maisParte IV. Linguagens de Programação. Relembrando da Última Aula... Exemplos de Polimorfismo. Exemplo: Hierarquia Animal
Linguagens de Programação Parte IV Prof. Miguel Elias Mitre Campista http://www.gta.ufrj.br/~miguel Introdução à Programação (Continuação) Relembrando da Última Aula... Herança Mais exemplos de programação
Leia maisJava First-Tier: Aplicações. Sobrecarga. Orientação a Objetos em Java (II) Sobrecarga de Construtores: Exemplo de Declaração
Java First-Tier: Aplicações Orientação a Objetos em Java (II) Grupo de Linguagens de Programação Departamento de Informática PUC-Rio Sobrecarga Um recurso usual em programação OO é o uso de sobrecarga
Leia maisProgramação Orientada a Objectos - P. Prata, P. Fazendeiro
9 Classes Abstractas e Interfaces Classe Abstracta Classe em que pelo menos um dos métodos de instância não é implementado. Exemplo: public abstract class Forma{ public abstract double area(); public abstract
Leia maisIntrodução à orientação a objetos. João Tito Almeida Vianna 18/05/2013
Introdução à orientação a objetos João Tito Almeida Vianna 18/05/2013 Roteiro Aula 1 Introdução: Programação estruturada x Orientação a objetos Orientação a objetos Classe e objeto Encapsulamento Herança
Leia maisProgramação. Orientada a Objetos: Herança. Objetos. Relacionamento entre classes. Análise e Projeto Orientados a. Objetos
Programação Orientada a Objetos: Herança Alexandre César Muniz de Oliveira Análise e Projeto Orientados a Objetos A análise orientada a objetos Determina o que o sistema deve fazer: Quais os atores envolvidos?
Leia maisLinguagem de Programação II Programação Orientada a Objetos. Orientação a Objetos
Linguagem de Programação II Programação Orientada a Objetos Orientação a Objetos Prof. Alessandro Borges 2 Tópicos Introdução à Programação Orientada a Objetos Conceitos Objetivos Classes e Objetos Atributos
Leia maisProgramação orientada a objetos
Programação orientada a objetos Neste capítulo: conceitos-chave que caracterizam as linguagens de programação orientadas a objetos; pragmática da programação orientada a objetos; o projeto de duas importantes
Leia maisAULA 8 Polimorfismo de: coerção, overloading, inclusão e paramétrico Prof. Dr. Fernando Henrique Campos
Câmpus Santa Helena Curso: Ciência da Computação Disciplina: Programação Orientada a Objetos AULA 8 Polimorfismo de: coerção, overloading, inclusão e paramétrico Prof. Dr. Fernando Henrique Campos Tema
Leia maisLinguagem de Programação IV Introdução
Linguagem de Programação IV Introdução Prof. Alessandro Borges 2 Tópicos Orientação a objetos Classe Objeto Abstração Encapsulamento Herança Polimorfismo Plataforma Java 3 4 POO é um paradigma de programação
Leia maisProgramação Orientada a Objetos para Redes de Computadores
Programação Orientada a Objetos para Redes de Computadores Prof. Miguel Elias Mitre Campista http://www.gta.ufrj.br/~miguel PARTE 2 Programação em C++ - Template Templates Funções templates Especificam
Leia maisProgramação Orientada a Objetos. Métodos e Atributos. Métodos. Métodos. Alexandre César Muniz de Oliveira. Parte III
Programação Orientada a Objetos Alexandre César Muniz de Oliveira Métodos e Atributos Parte III Métodos [mod] tipo nome ([tipo arg]) [throws exc]{ [mod]: zero ou mais modificadores separados por espaços
Leia maisFundamentos de Programação
Fundamentos de Programação ET43I Aula 5 Prof. Daniel Cavalcanti Jeronymo Orientada a Objetos e instâncias. Construtores, destrutores e operador de atribuição de cópia. Objetos, atributos, operações: mensagens
Leia maisAprendendo. Java 2. Rodrigo Mello Ramon Chiara Renato Villela. Novatec Editora Ltda.
Aprendendo Java 2 Rodrigo Mello Ramon Chiara Renato Villela Novatec Editora Ltda. www.novateceditora.com.br 1 Programação Orientada a Objetos O que é Programação Orientada a Objetos? É um paradigma de
Leia maisProgramação com Objectos. Processamento de Dados I. 2. Classes, Atributos e Métodos
Programação com Objectos Processamento de Dados I 2. Classes, Atributos e Métodos 1 Classes, Atributos e Métodos Modificadores de acesso (visibilidade) Sobrecarga de métodos (method overloading) Variáveis
Leia maisFundamentos de Programação 2
Fundamentos de Programação 2 ET43G Aula 9 Prof. Daniel Cavalcanti Jeronymo e instâncias. Construtores, destrutores e operador de atribuição de cópia. Objetos, atributos, operações: mensagens e métodos,
Leia mais9 Classes Abstractas e Interfaces
9 Classes Abstractas e Interfaces Classe Abstracta Classe em que pelo menos um dos métodos de instância não é implementado. Exemplo: public abstract class Forma{ public abstract double area(); public abstract
Leia maisClasses, Métodos e Propriedades
Ambiente de Programação Visual Classes, Métodos e Propriedades Prof. Mauro Lopes 1-31 22 Objetivos Nesta aula iremos dar continuidade aos elementos de programação da Linguagem C#. Iremos apresentar de
Leia maisHerança. Universidade Católica de Pernambuco Ciência da Computação. Prof. Márcio Bueno.
Universidade Católica de Pernambuco Ciência da Computação Prof. Márcio Bueno poonoite@marciobueno.com Fonte: Material da Profª Karina Oliveira Possibilita o reuso de classes (código-fonte) Usar quando:
Leia maisJava Como Programar, 8/E
Capítulo 9 Programação orientada a objetos: herança Java Como Programar, 8/E (C) 2010 Pearson Education, Inc. Todos os 9.1 Introdução Herança Uma forma de reutilização de software em que uma nova classe
Leia maisProgramação Orientada a Objetos. Prof. Diemesleno Souza Carvalho
Programação Orientada a Objetos Prof. Diemesleno Souza Carvalho diemesleno@iftm.edu.br http://www.diemesleno.com.br Programação Orientada a Objetos Na aula passada, vimos: Classes Abstratas Programação
Leia maisDefinição. Em POO, a abstração é o processo de esconder os detalhes de implementação de uma aplicação.
Abstração JAVA Definição Em POO, a abstração é o processo de esconder os detalhes de implementação de uma aplicação. Em Java, a abstração é alcançada através de classes abstratas e interfaces. Classes
Leia maisAula 7 POO 1 Herança. Profa. Elaine Faria UFU
Aula 7 POO 1 Herança Profa. Elaine Faria UFU - 2019 Problema Problema As classes Funcionário e Estudante compartilham alguns atributos, mas não todos Não é possível utilizar uma classe para representar
Leia maisProgramação Java. Marco Fagundes. - Herança, Classes Abstratas e Interfaces Marco Fagundes -
Programação Java - Herança, Classes Abstratas e Interfaces - Marco Fagundes mfagundes@tre-pa.gov.br 1 Tópicos Herança Ligação Dinâmica Polimorfismo 2 Herança Herança é um conceito que mapeia as classes
Leia maisLinguagem de Programação C++
Exercício: Linguagem de Programação C++ Construa o diagrama de classes UML para as classes envolvidas na solução do exercício do slide 253. 267 Sobrecarga Linguagem de Programação C++ Neste exercício vimos
Leia maisIntrodução a classes e objetos. Prof. Marcelo Roberto Zorzan
Introdução a classes e objetos Prof. Marcelo Roberto Zorzan Herança Aula de Hoje Problema Considere uma empresa que tenha tipos de empregados no aplicativo de folha de pagamento Um empregado tem nome,
Leia maisHerança. Prof. Fernando V. Paulovich 23 de agosto de 2010
Herança SCC0604 - Programação Orientada a Objetos Prof. Fernando V. Paulovich http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto de Ciências Matemáticas e de Computação(ICMC) Universidade
Leia maisLinguagens de Programação
Linguagens de Programação Prof. Miguel Elias Mitre Campista http://www.gta.ufrj.br/~miguel Parte IV Introdução à Programação em C++ (Continuação) Relembrando da Última Aula... Herança Mais exemplos de
Leia maisPolimorfismo. O que é polimorfismo?
O que é polimorfismo? Polimorfismo Significa que variáveis podem referenciar mais do que um tipo. Não é um conceito novo e várias linguagens de programação aplicam. Funções são polimórficas quando seus
Leia maisInstituto de Informática Estrutura de Dados II
Instituto de Informática Estrutura de Dados II Revisão de Métodos em Classes Aplicada a Estrutura de Dados Básicas 20/08/2018 Profa. Lucília Gomes Ribeiro Prof. Dirson S Campos Programação em Java q O
Leia maisProgramação Java. - Herança e Polimorfismo - Marco Fagundes Marco Fagundes -
Programação Java - Herança e Polimorfismo - Marco Fagundes mfagundes@tre-pa.gov.br 1 Tópicos Herança Ligação Dinâmica Polimorfismo 2 Herança Herança é um conceito que mapeia as classes relacionadas entre
Leia maisNamespaces, Classes e Métodos.
. Linguagem de Programação III Mauro Lopes Carvalho Silva Professor EBTT DAI Departamento Acadêmico de Informática Campus Monte Castelo Instituto Federal de Educação Ciência e Tecnologia do Maranhão Linguagem
Leia maisLinguagem de Programação Orientada a Objeto Polimorfismo, Classes Abstractas e Interfaces
Linguagem de Programação Orientada a Objeto Polimorfismo, Classes Abstractas e Interfaces Professora Sheila Cáceres Polimorfismo Polimorfismo Polimorfismo é a característica única de linguagens orientadas
Leia maisBCC221 Programação Orientada a Objetos. Prof. Marco Antonio M. Carvalho 2014/2
BCC221 Programação Orientada a Objetos Prof. Marco Antonio M. Carvalho 2014/2 Site da disciplina: http://www.decom.ufop.br/marco/ Moodle: www.decom.ufop.br/moodle Lista de e- mails: bcc221- decom@googlegroups.com
Leia maisEncapsulamento e Métodos (Construtores e Estáticos) João Paulo Q. dos Santos
Encapsulamento e Métodos (Construtores e Estáticos) Sobrecarga de Métodos João Paulo Q. dos Santos joao.queiroz@ifrn.edu.br Roteiro Conceitos sobre Encapsulamento; Variável this; Métodos Construtores;
Leia maisRecapitulando. Construtores: (Overload assinatura) public Circle() {...} public Circle(double x, double y, double r) {... }
Recapitulando Orientação a objetos: programas organizados em torno da definição de classes, instanciação de objetos e troca de mensagens. Declaração de variáveis de referencia: Circle c; Criação/instanciação
Leia maisTÉCNICAS DE ORIENTAÇÃO A OBJETOS
TÉCNICAS DE ORIENTAÇÃO A OBJETOS APLICAÇÃO EM: C# E JAVA Sumário INTRODUÇÃO... 4 PARADIGMAS DE PROGRAMAÇÃO... 5 PROGRAMAÇÃO PROCEDURAL... 5 PROGRAMAÇÃO ESTRUTURADA... 5 PROGRAMAÇÃO ORIENTADA A OBJETOS...
Leia maisProgramação Orientada a Objectos - P. Prata, P. Fazendeiro
5 Polimorfismo Sobrecarga (overloading) de métodos: public class x { public void m1( ) {... sobrecarga do método m1 public void m1 ( int p ) {... - Diz-se que o nome de um método foi sobrecarregado ( overloaded
Leia maisClasse Abstrata e Interface
Orientação a objetos com Java Classe Abstrata e Interface Byron Leite byron.leite@gmail.com 1 Herança Agenda Geral Parte 04 Encapsulamento Pacotes Modificadores de Acesso private, default, protected, public
Leia maisProgramação Orientada a Objetos
Curso Profissional de Gestão e Programação de Sistemas Informáticos Disciplina: Programação e Sistemas de Informação Programação Orientada a Objetos Módulos 9/10/11 POO 2016/2017 História A OO surgiu no
Leia maisUNIVERSIDADE PAULISTA - UNIP ICET INSTITUTO DE CIÊNCIAS EXATAS E TECNOLÓGIA
LPOO - Linguagem de Programação Orientada a Objetos Prof. Msc. Célio R. Castelano Página 1 de 7 Curso Ciência da Computação Professor Célio Ricardo Castelano UNIVERSIDADE PAULISTA - UNIP ICET INSTITUTO
Leia maisJava First-Tier: Aplicações. Herança: Simples Múltipla. Orientação a Objetos em Java (III) Problemas de Herança Múltipla.
Java First-Tier: plicações Orientação a Objetos em Java (III) Grupo de Linguagens de Programação Departamento de Informática PUC-Rio Herança: Simples Múltipla O tipo de herança que usamos até agora é chamado
Leia maisHerança. Herança. Herança. Herança. Herança. Programação Orientada a Objetos
e Ligação Dinâmica Programação Orientada a Objetos e Polimorfismo A é a contribuição original do paradigma de programação orientado a objetos Fundamentos chave do paradigma OO: Abstração de Dados A herança
Leia maisUNIDADE 5 Aplicação dos Conceitos de Orientação a Objetos
UNIDADE 5 Aplicação dos Conceitos de Orientação a Objetos Objetivo da Unidade*: Conhecer e aplicar os conceitos mais importantes associados a orientação a objetos. 5.1 Métodos e atributos estáticos Atributos
Leia maisInterfaces e Classes Abstratas
Interfaces e Classes Abstratas José Gustavo de Souza Paiva Problema Método obterarea()? Classes Abstratas Classes que funcionam como um molde Declarada com comando abstract Contém um ou mais métodos abstratos
Leia maisRelacionamentos entre objetos
Programação Orientada a Objetos Relacionamentos entre objetos Associação, composição e agregação Construtores t e sobrecarga Variáveis de classe e de instância Reinaldo Gomes reinaldo@cefet-al.br Objetos
Leia maisCurso Profissional de Gestão e Programação de Sistemas Informáticos
Curso Profissional de Gestão e Programação de Sistemas Informáticos Disciplina: Programação e Sistemas de Informação Classes em C++ Módulos 10 e 11 POO A professora: Sandra Soares Classes em C++ Uma class
Leia maisClasses e Encapsulamento
Classes e Encapsulamento Marcio Santi POO e C++ Tipo Abstrato de Dados (TAD) TAD atributos dados que o representam interface operações associadas como é manipulado 1 Exemplo: Editor Gráfico (classe círculo)
Leia maisProgramação Orientada a Objetos Aula I Declaração de classes, métodos construtores. Prof.: Bruno E. G. Gomes IFRN
Programação Orientada a Objetos Aula I Declaração de classes, métodos construtores Prof.: Bruno E. G. Gomes IFRN 1 Introdução Na aula de hoje: Declaração de classes Métodos Construtores Exercícios de criação
Leia maisProgramação Orientada a Objectos - P. Prata, P. Fazendeiro
3 Classes e instanciação de objectos (em Java) Suponhamos que queremos criar uma classe que especifique a estrutura e o comportamento de objectos do tipo Contador. As instâncias da classe Contador devem
Leia maisNotas de Aula 04: Herança e polimorfismo.
Notas de Aula 04: Herança e polimorfismo. Objetivos da aula: Introduzir o conceito de Heranças Criar uma hierarquia de classes Rever o uso de modificadores de acesso. Apresentar o conceito de polimorfismo
Leia maisE N C A P S U L A M E N T O P R O F. M E. H É L I O E S P E R I D I Ã O
E N C A P S U L A M E N T O P R O F. M E. H É L I O E S P E R I D I Ã O REVIEW CLASSES E INSTÂNCIAS. REVIEW - O OPERADOR THIS This faz referencia a métodos e atributos da própria classe REVIEW - EXEMPLO
Leia maisIntrodução a Programação Orientada a Objetos
Introdução a Programação Orientada a Objetos Fernando de Simas, Airton de Souza, Sérgio Roberto Centro de Ciências Tecnológicas da Terra e do Mar Universidade do Vale do Itajaí UNIVALI. 88302-202 Itajaí
Leia maisLinguagem de Programação I Apresentação da Disciplina
Linguagem de Programação I Apresentação da Disciplina Apresentação da Disciplina Conteúdo: 1) Orientação a Objetos - Características da OO - Reutilização de código 2) Introdução à Linguagem Java - Histórico
Leia maisIntrodução à Orientação a Objetos em Java
Introdução à Orientação a Objetos em Java Prof. Gustavo Wagner (Alterações) Slides originais: Prof. Tiago Massoni Desenvolvimento de Sistemas FATEC-PB Centro de Informática, UFPE Programação estruturada
Leia maisPCS3111. Laboratório de Programação Orientada a Objetos para Engenharia Elétrica. Aula 6: Polimorfismo
PCS3111 Laboratório de Programação Orientada a Objetos para Engenharia Elétrica Aula 6: Polimorfismo Escola Politécnica da Universidade de São Paulo Conceito de polimorfismo 2 Polimorfismo A palavra vem
Leia maisImplementando classes em C# Curso Técnico Integrado em Informática Fundamentos de Programação
Implementando classes em C# Curso Técnico Integrado em Informática Fundamentos de Programação Introdução Além de utilizar as classes presentes na biblioteca padrão, programadores podem definir suas próprias
Leia maisComputação II Orientação a Objetos
Computação II Orientação a Objetos Fabio Mascarenhas - 2016.2 http://www.dcc.ufrj.br/~fabiom/java Classes abstratas Até agora, usamos interfaces toda vez que queríamos representar algum conceito abstrato
Leia maisO que é uma variável?
Escopo, Ligação e Ambiente de Execução mleal@inf.puc-rio.br 1 O que é uma variável? Uma variável pode ser definida como uma tupla r nome é um string usado para
Leia maisCOMPORTAMENTOS - Observações
COMPORTAMENTOS - Observações O próprio objeto realiza operações de consulta ou alteração dos valores dos seus atributos Essas operações são definidas em seus métodos Os métodos também são utilizados para
Leia maisProgramação Orientada a Objetos
Programação Orientada a Objetos Herança e Polimorfismo Prof. Francisco de Assis S. Santos, Dr. São José, 2015. Herança em POO O conceito de herança torna mais rápido o desenvolvimento de softwares complexos
Leia maisEsta categoria mais geral, à qual cada objeto pertence, denominamos de classe; IFSC/POO + JAVA - prof. Herval Daminelli
Esta categoria mais geral, à qual cada objeto pertence, denominamos de classe; Tudo no mundo real pode ser representado por meio do conceito de "objeto": uma planta, uma mesa, uma pessoa, um sentimento,
Leia maisLinguagem de Programação III
Linguagem de Programação III Aula-6 Reutilização de Classes Prof. Esbel Tomás Valero Orellana Até Aqui Introdução a POO e sua implementação em Java Atributos, métodos e encapsulamento dos mesmos Trabalhando
Leia mais