Orientação a Objetos Curso de Férias 2011

Slides:



Advertisements
Apresentações semelhantes
Orientação a objetos identidade abstração classificação encapsulamento
Advertisements

Desenvolvimento de aplicativos Orientados a Objetos: Definição e Características THIAGO IDEALI.
Introdução a Programação Orientada a Objetos
Paulo Marques Hernâni Pedroso
Modificadores Marco Antonio. Introdução Em todas as linguagens de programação o acesso a classes/métodos deve seguir algumas regras.
PHPOO Erick Souza. Conceitos de Orientação a Objetos Objeto é um conceito ou item(concreto ou abstrato). Software orientado a objetos Uma classe é uma.
Prof. Thiago Pereira Rique
De 17 1 Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes Aula.
Polimorfismo e Classes Abstratas Profa
Herança Profa. Isabel Harb Manssour (Material adaptado das aulas dos Profs: Luciana Nedel e Júlio Machado) Packages (bibliotecas de classes) Atributos.
Introdução ao paradigma de programação: Orientado a Objetos
Diagrama de Classes.
Linguagem de Programação II
Linguagem de Programação II
Capítulo 9 Herança 1.
Herança e Polimorfismo
Classes e objetos P. O. O. Prof. Grace.
TÉCNICAS DE PROGRAMAÇÃO II
Revisão POO Profa. Cintia Carvalho Oliveira
Curso de extensão em Desenvolvimento Web
Polimorfismo em C#.
Programação Orientada a Objetos com Java
Aula prática 13 Orientação a Objetos – C++ Parte 1
Conceitos básicos de orientação a objetos
JAVA Orientação a Objetos
Sobrecarga e Encapsulamento
Programação Orientada à Objetos
Programação I Aula 2 (Métodos)
Linguagem de Programação JAVA
Classes, Objetos, Atributos e Métodos JAVA
Professora Lucélia Oliveira
Orientação a Objetos Parte I
Programação Orientada à Objetos
Programação Orientada a Objetos - Java
Programação Orientada a Objetos Curso de Engenharia da Computação Parte 03 – Conceitos Básicos III Prof. Fabricio Mota Oliveira
Prof. Silvestri – todos os direitos reservados SISTEMAS DISTRIBUIDOS Aula 5 Eduardo Silvestri
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS EM JAVA
Aula prática 14 Orientação a Objetos – C++ Parte 2
Programação I Aula 6 (Herança, Polimorfismo e Encapsulamento)
Programação Orientada a Objetos - Java
Programação Orientada à Objetos
UTFPR – Campus Curitiba - DAELN Cursos de Eng. Eletrônica/Eng
Prof. Gilberto Irajá Müller
Orientação a Objetos usando Java
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Java Kickstart, day 2 Semelhanças com linguagem C.
Aula Prática 4 Monitoria IP/CC (~if669).
Interfaces POO Avançado.
Herança e Polimorfismos
Programação I Aula 1 Prof. Gilberto Irajá Müller Última atualização 2/3/2009.
Programação Orientada a Objetos - Java Professor: Jean Carlo Mendes.
Paradigmas da Programação – Semestre 2 – Aula 1 Professores: Fábio de Paula Santos Eduardo Mantovani
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Herança Modelagem e Programação Orientada a Objetos
Construtores e Destrutores
Bruno Inojosa MCP .NET Framework
Conteúdos Programáticos Criação de classes em VB Criar Criar Manipular Manipular Tipos de acesso Tipos de acesso Constructores Constructores.
Modificadores Programação II.
Herança.
Polimorfismo - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour ▐ Polimorfismo ▐ Exemplo ▐ Classes Abstratas.
Módulo II Capítulo 1: Orientação a Objetos
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA TOCANTINS Campus Araguaína Continuação Modelagem Orientada a Objetos Técnico Subsequente.
Paradigmas da Programação – Semestre 1 – Aula 7 Professor: Eduardo Mantovani )
Prof.: Bruno Rafael de Oliveira Rodrigues. Herança Possibilita a uma classe usar campos ou métodos definidos em outra classe. Assim a classe pai possui.
Implementação Orientada a Objetos – Aula 08 Herança, sobrescrita de métodos e polimorfismo Prof. Danielle Martin Universidade de Mogi das Cruzes
1. 2 Programação Orientada a Objetos Prof. Maurício Rodrigues de Morais
Programação para Internet Aula 06 Linguagem Java (Orientação a Objetos – Atributos e Métodos)
Herança em Java Curso: Informática Disciplina: Programação Orientada a Objetos Prof. Abrahão Lopes
Laboratório de Computação Aula 06 e 07 – Implementação de classes Prof. Fábio Dias
Linguagem de Programação – Aula 04 Prof. Me. Ronnison Reges Vidal.
Transcrição da apresentação:

Orientação a Objetos Curso de Férias 2011 Enrique Pimentel Leite de Oliveira enrique@woopi.com.br

Orientação a objetos Na POO, implementa-se um conjunto de classes que definem os objetos presentes no software. Cada classe determina o comportamento (definidos nos métodos) e estados possíveis (atributos) de seus objetos, assim como o relacionamento com outros objetos.

Programação Estruturada vs. Programação OO A programação estruturada tem como principal foco as ações (procedimentos e funções) A programação OO se preocupa com os objetos e seus relacionamentos. Além do conceito de objeto, a programação OO tem como alicerces os conceitos de encapsulamento, classe, herança e polimorfismo.

Programação Estruturada vs. Programação OO Programação Orientada a Objetos Programação Estruturada Métodos Procedimentos e funções Atributos Variáveis Mensagens Chamadas a procedimentos e funções Classes Tipos de dados definidos pelo usuário Herança - Polimorfismo

Conceitos de OO Classe Objeto Instância Atributo Métodos Sobrecarga Herança Encapsulamento Abstração Polimorfismo Classe Abstrata Interface

Classe x Objeto

Classe Representa um conjunto de objetos com suas próprias características. Uma classe define o comportamento dos objetos, através de métodos e quais estados (características) ele é capaz de manter, através de atributos. Exemplo de classe: Seres humanos Carro

Classe Definição de classe em C#: public class Minha classe { }

Atributo Normalmente é utilizado internamente na classe (A exposição das características da classe é tarefa dos métodos). Exemplo: public class Livro { // Atributos private string titulo; private short ano; ... }

Exemplo Quais seriam os atributos de uma classe Carro ? Placa Número do chassi Marca Modelo Ano Cor Combustível Capacidade Motor Velocidade

Métodos Conceito: ações que podem ser realizadas pelo objeto; Determinam como um objeto agirá ao receber uma mensagem; São usados para dar acesso às funcionalidades dos objetos; Exemplo: Acender Apagar Iluminar

Métodos Exemplo public class Carro { public double Acelerar(double velocidade) }

Modificadores de acesso Os modificadores de acesso são palavras-chave que modificam a forma como podem ser acessadas as classes, métodos e/ou variáveis Modificador Significado public Atributo ou método acessível a partir de qualquer lugar private Atributo ou método acessível apenas para o código que faz parte da classe onde foi criado. protected Atributo ou método acessível apenas para o código que faz parte do mesmo pacote, ou uma classe derivada (veremos com detalhes na parte de Herança) Não especificado Atributo ou método acessível dentro da classe onde foi criado e em classes que pertencem ao mesmo pacote. Maiores informações: http://msdn.microsoft.com/en-us/library/wxh6fsc7(v=VS.90).aspx

Objetos Objeto: É uma instância de uma classe. Um objeto é capaz de armazenar estados através de seus atributos e reagir a mensagens enviadas a ele, assim como se relacionar e enviar mensagens a outros objetos. Exemplo de objetos da classe Humanos: João, José, Maria Exemplo de objetos da classe Carro: Ferrari, Golf, Audi, Celta, Fusca.

Objetos Identificação do carro: Placa: WWS2345 Número do chassi: 9BGFG09ZYKJ182937 Marca : Chevrolet Modelo : Corvette Ano: 2001 Cor : Roxo Combustível: gasolina Capacidade: 4 pessoas Motor: 2.3

Criação de um objeto Em C#, utiliza-se a seguinte sintaxe para criação de objetos: <Tipo> <nome> = new <Tipo>(); Exemplos: Computador comp1 = new Computador(); Pessoa pess = new Pessoa();

Instâncias da classe Casa (objetos) Criação de um objeto Instâncias da classe Casa (objetos) Classe Casa c1 = new Casa(); c1.numero = 12; c1.cor = Color.Yellow; Casa c2 = new Casa(); c2.numero = 56; c2.cor = Color.Red; Casa c3 = new Casa(); c3.numero = 72; c3.cor = Color.White; c3.abrePorta(); Casa 12 boolean abrePorta() {} int numero Color cor static String arquiteto 56 72

Construtores Construtores são procedimentos realizados na construção de objetos Parecem métodos, mas não têm tipo de retorno e têm nome idêntico ao nome da classe Nem sempre aparecem explícitos em uma classe: podem ser omitidos (o sistema oferece uma implementação padrão) Para cada objeto, o construtor é chamado exatamente uma vez (durante sua criação) Exemplo: Objeto obj = new Objeto(); Alguns podem requerer parâmetros Objeto obj = new Objeto(35, "Nome");

Construtores Implícitos Explícitos São aqueles que não são declarados dentro do código da classe, porém são chamados no momento da instanciação. A linguagem se encarrega de iniciar os atributos da classe com os valores padrões adequados aos seus tipos. Explícitos São construtores declarados dentro do código da classe e que têm a finalidade de iniciar os atributos com valores diferentes dos padrões ou realizar determinadas tarefas no momento em que o objeto é criado.

Construtores Características É o primeiro “método” executado por um objeto. Deve ter o mesmo nome da classe. Não pode ter um tipo de retorno. É utilizado quando um objeto é instanciado através do operador new Na maioria das vezes é declarado como public Ele é responsável por alocar memória

Construtores Exemplo int codigo; String nome; //Construtor public class Cliente { int codigo; String nome; //Construtor public Cliente() }

Construtores Exemplo codigo = cod; nome = nom; int codigo; public class Cliente { int codigo; String nome; //Construtor public Cliente(int cod, String nom) codigo = cod; nome = nom; }

Construtores Exemplo public class Cliente int codigo; String nome; { int codigo; String nome; //Construtores public Cliente() } public Cliente(int cod, String nom) codigo = cod; nome = nom;

Exercício Crie uma classe ProcessaStrings que permita: Armazenar uma lista de Strings Contar o número de palavras de uma das strings ContarPalavras(int indiceString) Inverter uma das palavras InverterString(int indiceString) Concaternar duas strings ConcatenarStrings(int indiceString1, int indiceString2) Crie uma classe Teste para utilizar a classe ProcessaStrings

Exercício Crie uma classe Veiculo com as seguintes características: Marca Modelo Ano Placa Em seguida crie uma classe Estacionamento que permita controlar a entrada e saída e veículos. Considere que a primeira hora custa R$ 3,00 e as demais horas R$ 1,00. Modele a classe Estacionamento de acordo com as necessidades do seu projeto.

Herança Uma característica importante da programação orientada a objetos é permitir a criação de novas classes com base em uma classe já existente Esta classe existente pode ser tanto uma classe do próprio C#, ou ainda uma classe construída por outra pessoa Superclasse: classe já existente Subclasse: classe criada a partir da superclasse Objetivo: proporcionar o reutilização de código

Herança Herança “Herança é a capacidade de reutilizar código pela especialização de soluções genéricas já existentes” Novas classes são criadas a partir de outras já existentes Subclasse herda de uma Superclasse atributos métodos Subclasse Absorve atributos e comportamentos além de adicionar os seus próprios Pode sobrescrever métodos da superclasse Construtores nunca são herdados!

Herança Notação UML Pai - numero: int ... + Pai (n: int) + set (n: int) + get ( ): int Filho - dado: String ... + Filho (n: int , d: String) + set (d: String) + get ( ): String

Herança Em C#, utiliza-se : para definir herança de classes Exemplos: public class <nomesubclasse> : <nomesuperclasse> {...} public class Motorista : Funcionario{...} public class Engenheiro : Funcionario{...}

Herança Os métodos na subclasse que foram herdados, continuam acessando todos os membros (atributos) da superclasse, incluindo os não herdados. Se for necessário invocar um método da superclasse dentro de algum método da subcalsse, em C# utiliza-se: base.Metodo() Apesar dos construtores da superclasse não serem herdados, eles podem ser invocados para inicializar os atributos herdados (membros da superclasse), através com comando: base()

Herança - Exemplo public class Animal { private String tipo; public Animal(String tipo1) tipo = tipo1; } public void show() Console.Write(“Eu sou um ” + tipo); public class Cachorro : Animal { private String nome; // Nome do cachorro private String raça; // Raça do cachorro public Cachorro(String nome1): base(“cachorro”) nome = nome1; // Nome fornecido raça = “Desconhecida”; // Raça default } public Cachorro(String nome1, String r):base(“cachorro”) nome = nome1; // Nome fornecido raça =r; // Raça fornecida

Herança Subclasse herda os membros da superclasse Os membros da superclasse são tratados como membros da subclasse, isto é, como se tivessem sido declarados dentro da subclasse. Nem todos os atributos e métodos da superclasse são obrigatoriamente acessíveis na subclasse, pois isto dependerá dos modificadores de acesso. Modificador private não permite acesso direto dentro da subclasse. Um objeto possui seus próprios atributos e métodos, mais os atributos e métodos da superclasse

Herança Herdando atributos e métodos public x protected x private public: acessível em qualquer classe protected: acessível por métodos da própria classe ou de uma subclasse private: acessível somente nos métodos da própria classe Métodos construtores NUNCA são herdados Os métodos na classe derivada que foram herdados da superclasse, continuam podendo acessar TODOS os membros da superclasse

Exercício Escreva o código para implementar a seguinte hierarquia de classes: Atributos da classe “Animal” : String nome Métodos da classe “Animal”: void imp() // imprime o nome // e a classe do animal String getNome() void talk() // “Me not falar” Métodos da classe “Passaro”: void talk() // “piu, piu.” Métodos da classe “BemTeVi”: void talk() // “bem-te-vi!” Atributos da classe “Papagaio”: String vocabulario // frase Métodos da classe “Papagaio”: void talk() // exibe vocabulario void setVoc(String v) //altera voc. A classe mamífero não tem atributos ou métodos. Atributos da classe “Cachorro”: boolean lateMuito Métodos da classe “Cachorro”: void setLateAlto() void setLateBaixo() void talk() // “AU! AU!” ou “au, au...” Métodos da classe “Vaca”; void talk() // “Muuu...” Implemente a classe Zoo (possui apenas o método main) que testa a hierarquia de classes, mantendo vetores de animais. A saída do programa deve ser feita via uma janela gráfica.

Atributos da classe “Animal” : String nome Métodos da classe “Animal”: void imp() // imprime o nome // e a classe do animal String getNome() void talk() // “Me not falar” Métodos da classe “Passaro”: void talk() // “piu, piu.” Métodos da classe “BemTeVi”: void talk() // “bem-te-vi!” Atributos da classe “Papagaio”: String vocabulario // frase Métodos da classe “Papagaio”: void talk() // exibe vocabulario void setVoc(String v) //altera voc.

Exercício Final Crie um programa que permita controlar as contas bancárias de um cliente O sistema deverá permitir: Cadastrar contas (conta corrente, conta especial e poupança) Fazer saques e depósitos Movimentação entre contas.

Referências Deitel, C# como Programar – Editora Makron Books – Segunda edição, 2007 Rafael Santos, Introdução à Programação Orientada a Objetos usando JAVA – Editora Campus – Série SBC Desenvolvedor 5 estrelas. Disponível em http://www.mslatam.com/brasil/dce/ Desenvolvimento para Web. Disponível em http://msdn.microsoft.com/pt-br/ff380144.aspx