330 likes | 433 Views
Introdução a Programação Orientada a Objetos. Programação em Java Prof. Maurício Braga. Desenvolvimento de Software tradicional. Programas Processos dados. Enfoque a programas. Visão tradicional usa perspectiva de algoritmo
E N D
Introdução a Programação Orientada a Objetos Programação em Java Prof. Maurício Braga
Desenvolvimento de Software tradicional Programas Processos dados
Enfoque a programas • Visão tradicional usa perspectiva de algoritmo • O principal bloco de construção é o procedimento ou função • Conduz o foco de atenção para questões referentes ao controle e a decomposição de algoritmos maiores em outros menores • Modelagem de dados divide as informações em tabelas, criando mecanismos para junção posterior
Parar Desenvolvimento Orientado a Objetos Visualiza e representa o mundo real como um conjunto de objetos que interagem entre si para que determinadas operações sejam realizadas. Motorista Carro
Desenvolvimento Orientado a Objetos • Visão contemporânea adota perspectiva OO. • Forma de construir software que difere bastante dos enfoques tradicionais. • Programação orientada a objetos é freqüentemente referenciada como um “novo” paradigma de programação.
Desenvolvimento Orientado a Objetos • Programação implementada pelo envio de mensagens. A solução de um problema consiste em identificar os objetos, mensagens e seqüências de mensagens para efetuar a solução. • Cada objeto do mundo real transforma-se em um “objeto” de software. • Viabiliza a montagem de sistemas a partir de componentes.
Exemplo • Você resolve jantar numa pizzaria • Existem vários objetos na pizzaria: • Pizza • Mesa • Garçom, etc.... • Cada objeto tem características que o descrevem: • Mesa redonda ou quadrada • Mesa desocupada ou não
Exemplo – Objetos Conta corrente deposito() saldo
Criação dos objetos • Desenvolver uma aplicação no paradigma OO implica em modelar os objetos existentes no mundo real no sistema em desenvolvimento. • Objetos existentes no mundo real podem ser complexos, tornando necessário abstrair as características relevantes de cada entidade para o sistema em desenvolvimento • O processo de abstração é fundamental para o desenvolvimento de softwares orientados a objetos.
Abstração Eliminação do irrelevante e amplificação do essencial
Abstração • É o mecanismo que nos permite representar uma realidade complexa em termos de um modelo simplificado, de modo que detalhes irrelevantes possam ser suprimidos. • Processo de filtragem de detalhes sem importância do objeto, para que apenas as características apropriadas que o descrevem permaneçam.
Exemplo – abstração Registros em casa Registros Detran Registros de oficina Km/l, manutenção, etc Identificação, impostos, placa, etc.. placa, conserto, pagamento, etc..
Objetos • Um objeto é qualquer coisa, real ou abstrata, sobre a qual armazenamos dados e operações que manipulam tais dados • Unidade básica de modularização do sistema na abordagem OO • Um objeto é um ente independente, composto por: • atributos, isto é, características ou propriedades que definem o objeto • comportamento, isto é, um conjunto de ações pré-definidas (denominada métodos), através das quais o objeto responderá à demanda de processamento por parte de outros objetos
Em resumo: • Em outras palavras, a expressão orientada a objetos significa que o aplicativo é organizado como uma coleção de objetos que incorporam tanto a estrutura como o comportamento dos dados • Criar um programa requer modelar o mesmo como um conjunto de objetos que interagem para realizar uma ou mais tarefas de interesse do usuário.
Desenvolvimento tradicional x orientado a objetos Programas Classes processos atributos dados operações
Classes • Classes: “fábricas” de objetos. • Exemplificando, temos que Pessoa é uma classe e João é um objeto (instância) da classe Pessoa. • Um carro é uma classe; “meu carro” é um objeto. • Objetos similares são agrupados em classes
Classes – Fábrica de objetos. Definição da classe
debite(50R$) debite Mensagens • A POO identifica uma abordagem em que o programador visualiza seu programa em execução em termos de objetos que se comunicam através de trocas de mensagens • Mensagem - composta por um nome e por parâmetros (opcional) Cliente Conta
Mensagens • Objetos interagem enviando mensagens uns para os outros. • O objeto que receber a mensagem responderá através da seleção e execução de um método que faz parte de seu comportamento • Após a execução, o controle volta para o objeto que enviou a mensagem • Uma mesma mensagem pode gerar ações diferentes (polimorfismo) • Classes bem projetadas escondem seus dados do ambiente externo (encapsulamento)
Classes e objetos em Java Estrutura de uma classe em Java Definição da classe [acesso] class NomeDaClasse { Atributos Construtores Métodos } O conteúdo da classe
Classes e objetos em Java Métodos e parâmetros de uma classe em Java • Viabilizam a troca de mensagens entre os objetos. • Definem as operações que podem ser invocadas em um objeto. • Acelerar o carro; • Freiar. • Métodos podem ter parâmetros para passar informações adicionais necessárias para sua execução. • Acelerar ‘x’ km/h2
Classes e objetos em Java Métodos e parâmetros de uma classe em Java • Métodos têm uma estrutura que consiste em um cabeçalho e um corpo. • O cabeçalho define a assinatura do método. public String getNomeCurso() public voidsetNomeCurso(String nome) • O corpo engloba as instruções do método.
Classes e objetos em Java Atributos de uma classe em Java • Atributos armazenam valores para um objeto. • Eles também são conhecidos como variáveis de instâncias. • Atributos definem o estado de um objeto. • Normalmente são definidos como privados e vêm acompanhados de dois métodos • set<nomeAtributo> • get<nomeAtributo> public class CursoGraduacao { private String nomeCurso; Construtor e métodos omitidos. } Modificador de visibilidade Nome da variável Tipo private String nomeCurso;
Exemplo public class Produto { private int codigo; private String nome; public String getNome() { return nome; } public void setNome(String nome_produto) { nome = nome_produto; } }
Classes e objetos em Java Construção de objetos em Java • Realizada com a palavra reservada New. • Processo conhecido como criação de uma instância de uma classe. • Tipo da variável pode diferir do objeto realmente criado (desde que estejam relacionados por herança). Declaração do tipo da variável Objeto real criado Variável Produto p = new Produto();
Construtores • Construtores inicializam um objeto. • Eles têm o mesmo nome das suas classes. • Eles armazenam valores iniciais nos atributos do objeto. • Eles freqüentemente recebem valores de parâmetros externos para definir os atributos. EX: public Produto(int cod, Stringnome_prod) { codigo = cod; nome = nome_prod; }
Classes e objetos em Java • Construtores • Pode existir mais de um construtor em uma classe; • Caso não seja definido nenhum construtor, o compilador cria o construtor padrão, sem parâmetros; • O construtor padrão inicializa os atributos de classe para seus valores padrões. • Caso seja definido qualquer construtor, o construtor padrão não será adicionado pelo compilador; • Caso deseje-se que a classe ainda possua um construtor sem parâmetros, é necessário declará-lo explicitamente.
Classes e objetos em Java • Declaração de pacotes • Permite a reutilização de classes; • Adição da declaração package ao arquivo: • Deve ser a primeira instrução do arquivo; • Como comentários não são instruções, apenas comentários podem vir antes que a declaração package. • Definição de visibilidade da classe: • public – Toda e qualquer classe Java possui acesso; • Apenas classes públicas são reutilizáveis, as classes não públicas costumam ser usadas apenas para dar suporte às públicas, e são declaradas em um mesmo arquivo que uma classe pública (inner classes).
Classes e objetos em Java • Declaração de pacotes (cont.) • A Sun sugere a utilização do nome do domínio na internet invertido. • Ex: Classes disponibilizadas pela Apache (http://apache.org) devem ter seus pacotes iniciados como org.apache • Para utilizar uma classe pública que pertence a um pacote fora deste pacote, devemos importar esta classe. • Ex: se eu declarar uma classe chamada Time no pacote com.msx, devo usar a seguinte instrução em uma classe que não pertença ao pacote com.msx: • Import com.msx.Time;
Classes e objetos em Java • Modificadores de acesso • Public • Pode ser utilizado para classes, atributos e métodos, permitindo que sejam utilizados por qualquer outra classe Java; • Private • Pode ser utilizado para atributos e métodos, permitindo que sejam utilizados apenas pela classe que os declara. Pode ser utilizado com classes internas também. • Default • Caso nenhum modificador de acesso seja definido, o atributo ou método será considerado com acesso de pacote, sendo acessíveis por qualquer classe que pertença ao mesmo pacote que os declara.
A Referência this • Métodos de instância recebem um argumento chamado this que é uma referência ao objeto corrente. • O uso explícito do this é necessário quando: • o nome de um parâmetro do método for o mesmo de uma variável de instância; • desejamos passar uma referência do objeto corrente como parâmetro para outro método. EX: public Produto(int codigo, Stringnome) { this.codigo = codigo; this.nome = nome; }