Profº. Enrique Pimentel Leite de Oliveira
O termo orientação a objetos significa organizar o mundo real como uma coleção de objetos que incorporam estrutura de dados e um conjunto de operações que manipulam estes dados.
Existem duas fases distintas mas que são imprescindíveis ao sucesso do nosso projeto: a formalização do que estamos criando e a transformação da formalização (projeto) em algo físico. Essas duas fases estão representadas no mundo orientado a objetos pela classe (formalização, projeto de algo) e pelo objeto (transformação do projeto em algo físico, ou seja, uma variável na memória).
Segundo SEBESTA [Sebe2000], abstração é uma visualização ou uma representação de uma entidade que inclui somente os atributos de importância em um contexto particular. Seu propósito na programação é: diminuir a complexidade; permitir que os programadores se concentrem apenas nos atributos essenciais.
Abstração de processo public void fatorial(int inumber) {... } Abstração de dados Ocultar informações irrelevantes, preocupandose apenas com as características e a forma de comunicação.
Bloco de construção de um aplicativos de POO; Representa um elemento ou entidade do mundo real dentro de um determinado domínio; MÉTODOS ATRIBUTOS
Sintaxe para criação de objetos: <Tipo> <nome> = new <Tipo>(); Exemplos: Computador comp1 = new Computador(); Pessoa pess = new Pessoa();
A comunicação entre métodos ocorre através das mensagens; MENSAGEM OBJETO B OBJETO A
Ao receber uma mensagem, um objeto necessita executar uma ação; As ações ocorrem através de procedimentos denominados métodos.
Determinam como um objeto agirá ao receber uma mensagem; Implementa abstração de processos, uma que o objeto que envia a mensagem não necessita saber como o receptor irá tratá-la; São usados para dar acesso às funcionalidades dos objetos.
Os modificadores dos métodos são: Modificador Significado virtual O métodos pode ser sobrescrito abstract override extern O método deve ser sobrescrito (permitido apenas em classes abstratas) O método se sobrepõe a um método da classe-base (deve ser usado se um método estiver sendo sobrescrito) A definição do método se encontra em outro lugar
Fornecem acesso aos dados contidos no objeto; Exemplo: class Pessoa { private string strname; public string GetSetName { get {return strname;} set {strname = value}; } }
Pode ser definida como a união de objetos com características semelhantes a partir de um domínio Provê todas as informações necessárias para construir e utilizar objetos de um tipo particular Possuem atributos, métodos e propriedades Permite a instanciação de múltiplos objetos
Definição de classe em C#: class FirstClass { //atributos //propriedades //métodos }
Os modificadores que podem ser utilizados na construção das classes são: Modificador none ou internal public abstract ou internal abstract public abstract sealed ou internal sealed public sealed Significado A classe é acessível apenas dentro do projeto atual. A classe é acessível de qualquer lugar A classe é acessível apenas dentro do projeto atual, não podendo ser instanciada, apenas derivada A classe é acessível de qualquer lugar, não podendo ser instanciada, apenas derivada A classe é acessível apenas do projeto atual, não podendo ser derivada, apenas instanciada A classe é acessível de qualquer local, não podendo ser derivada, apenas instanciada
Descrevem as características de um objeto: Exemplo: Um objeto pessoa possui os atributos: nome, endereço etc. Normalmente é utilizado internamente na classe (A exposição das características da classe é tarefa das propriedades)
Acessibilidade dos atributos: Modificador public private Internal protected Significado Atributo acessível a partir de qualquer código Atributo acessível apenas para o código que faz parte da classe (o padrão se nenhuma palavra-chave for usada) Atributo acessível apenas para o código dentro do projeto em que ele é definido Atributo acessível apenas para o código que faz parte da classe, ou uma classe derivada
O construtor é um método que possui o mesmo nome da classe, não retorna nenhum valor e é chamado cada vez que um objeto da classe é criado Por padrão, quando não criamos nenhum construtor, o construtor vazio, que não recebe nenhum parâmetro e também não executa nenhum código, é criado automaticamente.
Exemplo:: class Cliente { int codigo; string nome; } public Cliente(int cod, string nom) { codigo = cod; nome = nom; }
Assim como os construtores, são métodos especiais que liberam os recursos alocados pelo objeto São executados quando o garbage collector elimina um objeto da memória
Sobrecarregar um método traz a possibilidade de termos diferentes versões do mesmo método ou propriedade que, mesmo possuindo o mesmo nome, aceitam um número diferente de parâmetros ou parâmetros de tipos diferentes O compilador diferencia o método que deve ser executado pelo número, tipo ou/e ordem dos parâmetros. Sobrecarga de construtores
! É o agrupamento dos dados e funções relacionados a uma classe Permite determinar a forma como os membros da classe serão expostos Possibilita baixo acoplamento, tornando as classes independentes Em C#, pode-se utilizar propriedades para acessar os atributos de uma classe, garantindo a integridade
" Um dos recursos mais importantes da POO Possibilita que as classes derivadas (filhas, sub-classe) herdem todas as características da classe base (mãe) Permite que criemos classes mais específicas
" Em C#, para dizermos que uma classe herda de outra, utilizamos : (dois pontos) na definição da classe como descrito abaixo: class <nomedaclassefilha>:<nomedaclassepai> É importante ressaltar que em C# não existe herança múltipla para classes
# Polimorfismo se refere à capacidade de criação de múltiplas classes com funcionalidades diferentes mas que possuem os mesmos métodos e propriedades, só que implementados de maneiras diferentes
$ Agrupamento de classes com um propósito comum Todos projeto tem um ou mais namespaces Utilizado para organizar os projetos e bibliotecas
%# WATSON, Karli Beginning C# Programando 2002 Makron Books; KAMIENSKI, Carlos Alberto Apostila de Introdução ao Paradigma de Orientação a Objetos; ZAINA, Luciana Martinez Apostila de Linguagem de Programação Orientada a Objetos 2004; MENEZES, Marden - Introdução a Orientação a Objetos Disponível em http://www.linhadecodigo.com.br/artigos.asp?id_ac =316