370 likes | 475 Views
POO – Programação Orientada a Objetos. Ronny Anderson XNA Natal Academic’s ronnytds@gmail.com Tecnologia em Desenvolvimento de Software CEFET-RN. Sumário. Introdução POO Objetos Classes Abstração Encapsulamento Polimorfismo Visibilidade Tipos de Dados Operadores. Introdução.
E N D
POO – Programação Orientada a Objetos Ronny Anderson XNA Natal Academic’s ronnytds@gmail.com Tecnologia em Desenvolvimento de Software CEFET-RN
Sumário • Introdução • POO • Objetos • Classes • Abstração • Encapsulamento • Polimorfismo • Visibilidade • Tipos de Dados • Operadores
Introdução Esta apresentação tem como objetivo mostrar os conceitos da orientação a objetos voltados para uma linguagem de programação(C#) e também familiarizar a sintaxe da linguagem.
POO • Se escrever um programa de computador em uma linguagem orientada a objetos, você criará em seu computador um modelo de alguma parte do mundo real. As partes das quais o modelo é construído são os objetos que aparecem no domínio do problema.
Objetos • Um objeto representa algo do mundo real: concreto ou abstrato; • A percepção dos seres humanos é dada através dos objetos; • Um objeto é uma entidade que exibe algum comportamento bem definido.
Objetos • Um objeto representa um item identificável, uma unidade, ou entidade, individual com uma regra bem definida. • Exemplos: • Livro • Carro • Conta Bancária • Reunião • Computador
Objetos • Objetos parecidos têm a mesma classificação: • Carro A, cor Verde, Duas Portas. • Carro B, cor Amerelo, Quatro Portas. • Os dois são carros. • O conhecimento a determinado objeto é dado a partir de sua classificação.
Objetos • Concretos: • Camisa, Bola, Controle Remoto • Abstratos: • Música, Filme, Transação Bancária • Modelo de Objetos: • OBJETO = DADOS + OPERAÇÕES
Objetos • Os objetos possuem 3 propriedades: • Estado: Suas características(dados/atributos) • Comportamento: Suas operações(métodos) sobre seus dados • Identidade: Seu valor de referência • Os valores dos dados são modificados a partir das operações sobre esses dados
Classes • Classes são especificações para objetos; • Uma classe serve de modelo para vários objetos semelhantes que possuem os mesmos tipos de informação em seu estado e tem os mesmos comportamentos;
Classes • Uma Classe é uma fabrica de objetos idênticos no que diz respeito a sua interface e sua implementação.
Abstração • Quando queremos diminuir a complexidade de alguma coisa, selecionamos parte do que estamos querendo; • Não se analisa o “todo”, em POO é importante analisar as partes para entender o todo.
Abstração • Exemplo: • Um coelho para sua dona tem os atributos cor e aparência e sob o ponto de vista de um veterinário tem atributos tais como peso e tamanho.
Encapsulamento • Encapsulamento é o processo de esconder todos os detalhes de um objeto que não contribuem para as suas características essenciais; • Um objeto em um programa “encapsula” todo o estado e o comportamento;
Encapsulamento • Exemplo:
Herança • É o mecanismo para expressar a similaridade entre Classes, simplificando a definição de classes iguais que já foram definidas.
Polimorfismo • Polimorfismo: • Poli -> Várias • Morfos -> Formas • O conceito de polimorfismo está associado a herança. • O polimorfismo trabalha com a redeclaração de métodos previamente herdados por uma classe.
Polimorfismo • Sobrecarga: • A sobrecarga pode mudar tanto a quantidade quanto os tipos dos argumentos; mas não pode mudar o tipo do valor de retorno de um método. • public static void setTamanhoRetangulo(int lado){ this.altura = (double) lado; this.largura = lado; } • public static void setTamanhoRetangulo(double alt, int larg){ this.altura = alt; this.largura = larg; }
Polimorfismo • Sobrescrita: • Pode-se definir métodos com o mesmo nome, recebendo os mesmos argumentos, porem a sua implementação é realizada de forma diferente. Chamamos isso de sobrescrita. • OBS.: Isso acontece para classes diferentes. • public static int soma(int a){ return a+a; } • public static int soma(int b){ return b+b+b; }
Visibilidade • - Private; • + Public; • # Protected; • ~ Default ou Friendly;(não existe em C#) • Internal(C#) • Protected Internal(C#)
Visibilidade • Public: • O nível de acesso é irrestrito
Visibilidade • Private: • O nível de acesso se restringe apenas a classe. • Não é passado por herança.
Visibilidade • Protected • É visível a toda a classe • É visível as classes do mesmo namespace • É passado por herança(mesmo em namespaces diferentes)
Visibilidade • Internal: • É o nível de acesso que não tem restrição dentro do mesmo assembly. O modificador internal é utilizado com classes internas ao sistema, como helpers a classe, que são auxiliares do sistema e não devem ou não precisam ser expostas.
Visibilidade • Protected Internal: • É uma combinação de dois modificadores: Protected e Internal. • Tem nível de acesso semelhante ao internal, com extensão aos tipos derivados, incluídos até mesmo em outro assembly tendo acesso ao membro ou ao tipo.
Visibilidade • OBS: • Se um tipo não for precedido de seu modificador de acesso ele será considerado internal. • Se um membro não for precedido de seu modificador de acesso ele será considerado private.
Tipos de Dados • Toda linguagem de programação oferece um grupo básico de tipo de dados, conhecidos como tipos primitivos ou fundamentais.
Tipos de Dados • Tipos Valor: São alocados na pilha(Stack). • São usados para tipos primitivos. • Tipos Referência: São alocados na Heap(Managed Heap). • São usados quando há necessidade de manipular um objeto. • Tipo Ponteiro: Podem ser utilizados em código inseguro(unsafe code).
Tipos de Dados • Conversões Implícitas: • Ocorrem em atribuições de variáveis ou passagem de parâmetros a métodos • Acontece automaticamente(do menor para o maior). • Conversões Explícitas(Cast): • Ocorre quando uma variável pode ser mais de um tipo. • Não ocorre automaticamente. • Necessário colocar o tipo para o qual vai ser convertido entre parênteses.
Tipos de Dados • Struct X Class • Struct(Estrutura): • É tratada como tipo valor. • Suporta construtores, constantes, campos, métodos, propriedades, indexadores, operadores e tipos aninhados. • Não suporta referências(membros, construtores parametrizados). • É um agrupamento de tipos primitivos e/ou compostos.
Tipos de Dados • Struct(Exemplo): struct Tamanho { int altura; int largura; }
Tipos de Dados • Class(Classe): • É tratada como tipo referência. • Suporta construtores, constantes, campos, métodos, propriedades, indexadores, operadores e tipos aninhados. • Suporta referências. • É uma classificação de objetos.
Operadores • Assim com os tipos de dados, C# oferece um grupo de operadores que nos permitem realizar as mais diversas operações.
Operadores • É interessante ressaltar que existe uma precedência entre os operadores.
www.xna.com www.nudes.cefetrn.br/xna xna-natal-academics@googlegroups.com