Baixe o app para aproveitar ainda mais
Prévia do material em texto
16/03/14 1 Linguagem de Programação Orientada a Objeto Pergen4no Araujo jpergen4no@gmail.com Programação Orientada a Objetos É um paradigma de análise, projeto e programação de sistemas de so?ware baseado na composição e interação entre diversas unidades de so?ware chamadas de objetos. Na programação orientada a objetos, implementa-‐ se um conjunto de classes que definem os objetos presentes no sistema de so#ware. Cada classe determina o comportamento (definidos nos métodos) e estados possíveis (atributos) de seus objetos, assim como o relacionamento com outros objetos. Os Alicerces da POO Abstração: é a capacidade de representar cenários complexos usando termos simples. Encapsulamento: está ligado ao conceito de “esconder informação” (data hiding), ou seja, consiste em esconder detalhes da implementação e oferecer uma interface comum aos objetos. Portanto, saberemos o que o objeto faz e não como ele faz. 16/03/14 2 Os Alicerces da POO Herança: possibilita um objeto aproveitar o comportamento de outro objeto, além de adaptar esse comportamento aproveitado, tornando-‐o único, ou seja, a classe derivada herda as caracterís4cas gerais da classe-‐base e pode adicionar capacidades específicas. Polimorfismo: é a capacidade de objetos diferentes possuírem métodos com o mesmo nome e com a mesma lista de parâmetros, mas que a maneira de implementação seja diferente, ou seja, executam de forma diferente. Conceitos Fundamentais Classe: representa um conjunto de objetos com caracterís4cas afins. Uma classe define o comportamento de seus objetos através de métodos e os estados possíveis destes objetos através de atributos. Objeto: é a representação de algo que existe. Em outras palavras é uma instância (concre4zação) de uma classe. Instância: É o ato de transformar uma classe em um objeto. Conceitos Fundamentais Uma classe é um 4po definido pelo usuário que contém o molde, a especificação para os objetos, assim como o 4po inteiro contém o molde para as variáveis declaradas como inteiros. A classe envolve, associa, métodos e dados, controlando o acesso a estes, defini-‐la implica em especificar os seus ATRIBUTOS (dados) e seus SERVIÇOS (código). 16/03/14 3 Estrutura Básica de uma Classe class nome_da_classe { atributos; metodos(); }; Estrutura Básica de uma Classe class Carro { string marca; string modelo; double tamanho; void parar(); void acelerar(); }; Atributos (Propriedades / Variáveis) A todo objeto podemos relacionar alguns atributos (propriedades). Os atributos são definidos na classe. Um atributo pode ser um 4po pré-‐definido na linguagem, um 4po definido pelo programador ou um 4po de uma biblioteca externa (STL). Na programação orientada a objeto, os atributos são definidos na classe e armazenados de forma individual ou cole4va pelos objetos. Portanto, temos atributos de classe e atributos de objeto. 16/03/14 4 Atributos Atributos de classe (cole>vos) Quando um atributos é dividido entre todos os objetos criados, ele é amarzenado na classe. Atributos de objeto (individuais) Quando um atributo é individual ele é armazenado no objeto. Métodos (Serviços / Funções) A todo objeto podemos relacionar determinados comportamentos, ações e reações. As ações ou comportamentos dos objetos são chamadas na análise orientada a objeto de métodos, assim um método é um função, um serviço fornecido pelo objeto. Métodos (Serviços / Funções) Os comportamentos dos objetos são definidos na classe através de métodos e servem para manipular e alterar os atributos do objeto (alteram o estado do objeto). Todo método deve ter um retorno. Quando o método não retornar nenhum 4po deve especificar o 4po void. O uso do void como retorno significa que o método não tem retorno. 16/03/14 5 Sobrecarga de Métodos Permite a existência de vários métodos de mesmo nome, porém com assinaturas levemente diferentes ou seja variando no número e 4po de argumentos e no valor de retorno. Ficará a cargo do compilador escolher de acordo com as listas de argumentos os procedimentos ou métodos a serem executados. Sobrecarga de Métodos class Calculadora { int soma(int nro1, int nro2) { return (nro1+nro2); } double soma(int nro1, double nro2) { return (nro1+nro2); } double soma(double nro1, double nro2) { return (nro1+nro2); } }; Especificadores de Acesso private Só pode ser acessado pelos métodos da classe. public Pode ser acessado de qualquer lugar no qual a classe é vísivel. protected Só pode ser acessado pelo métodosda classe e pelos métodos das classes derivadas. 16/03/14 6 Especificadores de Acesso class nome_da_classe { especificador_de_acesso_1 : membros_1 ; especificador_de_acesso_2 : membros_2 ; } nome_do_objeto; Especificadores de Acesso class TPessoa { private: string nome; public: string getNome(); void setNome(string nome); } Pessoa; Método Construtor É um método como outro qualquer com a diferença de ser automa4camente executado quando uma nova instância do objeto é criado. Tal método geralmente é responsável pela alocação de recursos necessários ao funcionamento do objeto além da definição inicial das variáveis de estado (atributos). O construtor nunca retorna um valor e não precisa ser especificado como void. 16/03/14 7 Método Construtor class Pessoa { string nome; string faculdade; string cep; public: Pessoa() { cep = “71000-‐000” } }; Método Destrutor É um método como outro qualquer com a diferença de ser automa4camente executado quando o objeto é liberado da memória. O uso do destrutor é especialmente ú4l quando um objeto atribui memória dinâmica durante sua vida e que no momento de ser destruído queremos que libere a memória que foi usada. O destrutor precisa ter o mesmo nome que o da classe com um 4l (~) como prefixo e não deve retornar nenhum valor. Método Destrutor class Nota { int *A1; Nota() { A1 = new int; } ~Nota() { delete A1; } }; 16/03/14 8 Sobrecarga de Construtor Como qualquer outra função, um construtor também pode ser sobrecarregado com diversas funções que possuem o mesmo nome mas 4po ou números de parâmetros diferentes. class Quadrado { int lado; public: Quadrado() { lado = 0; } Quadrado(int L) { lado = L; } } Herança Permite a criação de subclasses que herdam membros da classe pai (super-‐classe ou classe base). É um conceito aplicado no momento de criação das classes. Ela é usada na intenção de evitar que classes que possuam atributos ou métodos semelhantes sejam repe4damente criados. Herança class Aluno: public Pessoa { string nome; double mensalidade; }; class Professor: public Pessoa { string nome; double salario; }; class Pessoa { private: string cep; protected: string nome; };
Compartilhar