10. CONCEITOS
BÁSICOS
• Modularização
Este é um conceito aplicado quando se trabalha em equipe.
O programador pode trabalhar em uma classe enquanto
outros programadores fazem outras partes da aplicação.
11. CONCEITOS
BÁSICOS
Classes
• O que são?
• Estrutura
• Métodos
• Métodos: parâmetros
• Métodos: sobrecarga
• Atributos
• Herança e derivação
• Polimorfismo
• Interfaces
• Associações
12. CONCEITOS
BÁSICOS
Classes
Descrição de um grupo de objetos
por meio de um conjunto uniforme
de atributos e serviços.
Uma classe é um conjunto
de objetos que
compartilham as mesmas
operações.
13. CONCEITOS
BÁSICOS
Classes
• O que são?
É uma estrutura de dados que
combina estado (campos) e
comportamentos (métodos e outros
membros).
15. CONCEITOS
BÁSICOS
Classes
• Métodos
Métodos são declarados dentro de uma
classe para representar as operações que os
objetos pertencentes a esta classe podem
executar.
Um método é a implementação de uma
rotina, ou seja, o código propriamente dito.
18. CONCEITOS
BÁSICOS
Classes
• Herança e derivação
A herança é um relacionamento pelo
qual uma classe, chamada de sub-
classe, herda todos comportamentos
e estados possíveis de outra classe,
chamada de super-classe ou classe
base.
Uma classe derivada é uma
especialização da classe base.
19. CONCEITOS
BÁSICOS
Classes
• Polimorfismo
A princípio a partir do qual as classes
derivadas de uma única classe base
são capazes de invocar os métodos
que, embora apresentem a mesma
assinatura, comportam-se de
maneira diferente para cada uma
das classes derivadas.
25. Exemplificando
Crie uma classe chamada Pessoa e outras duas
chamadas Física e Jurídica, que herdam de
Pessoa, preencha com os atributos e métodos.
Notas do Editor
Durante um período de 9 meses entre 1842-1843, Ada Lovelace traduziu as memórias do matemático italiano Luigi Menabrea sobre a mais nova máquina proposta por Charles Babbage, a sua máquina analítica. Com o artigo, ela anexou uma série de anotações que especificavam em completo detalhe um método para calcular números de Bernoulli com a máquina, reconhecido por alguns historiadores como o primeiro programa de computador do mundo. Mas alguns biógrafos debatem a medida de suas contribuições originais versus as de seu marido. O tear de Jacquard (O procurado), inventado em 1801, usava furos em cartões perfurados para representar os movimentos do braço do tear ao realizar costuras, a fim de gerar padrões decorativos automaticamente.
Na década de 40 os primeiros computadores elétricos, reconhecidamente modernos, foram criados. A velocidade limitada capacidade da memória forçava os programadores a escrever a mão economicamente programas em linguagem de montagem (linguagem de máquina). Logo se descobriu que a programação em linguagem assembly exigia um grande esforço intelectual e era muito sujeita a erros.
Em 1948, Konrad Zuse publicou um artigo sobre a sua linguagem de programação Plankalkül. No entanto, esta não foi implementada em sua época e suas contribuições originais foram isoladas de outros desenvolvimentos.
Na década de 50 as primeiras três linguagens de programação modernas, cujos descendentes ainda estão em uso difundido hoje foram concebidas:
FORTRAN (1954), a "FORmula TRANslator", inventada por John Backus e outros.;
LISP, a "LISt Processor", inventada por John McCarthy e outros.;
COBOL, a COmmon Business Oriented Language, criada pelo Short Range Committee, com grande influência de Grace Hopper.
Lista de linguagens de programação
Exemplo: Uma aplicação para manipular e armazenar dados de um carro para um estacionamento. Deveria pegar os dados relevantes dos carros-clientes, como: Número da placa, cor, modelo, ano. Estes são chamados atributos. Muito falaremos de “atributos”, como sendo partes de classes. Um veículo tem muitas características, porém só nos interessa pegar o que nos for relevante para a aplicação.
Este é um conceito aplicado quando se trabalha em equipe. Uma vez que o engenheiro de software e analista validaram toda a lógica do projeto e já se tem em mãos a documentação das classes, o programador pode trabalhar em uma classe enquanto outros programadores fazem outras partes da aplicação.
Exemplo: Imagine um técnico em elétrica responsável pelas instalações de uma empresa em fase de construção. Ele não precisa saber como as paredes foram feitas ou de que material foram feitas para iniciar as instalações, só precisa de uma documentação, no caso uma planta do projeto que indique como serão feitas as instalações e quais os parâmetros que ele deverá seguir. Isso define bem a idéia, pois no caso de um programador, ele não precisa conhecer todas as implementações do projeto (o que chega a ser impossível), desde que ele tenha uma documentação adequada para fazer a sua parte.
Classe é o termo técnico utilizado em linguagens orientadas a objetos que descreve um conjunto de dados estruturados que são caracterizados por propriedades comuns. Também pode ser interpretado como uma estrututura modular completa que descreve as propriedades estáticas e dinâmicas dos elementos manipulados pelo programa.
Tipos mais importantes do C#.
É uma estrutura de dados que combina estado (campos) e comportamentos (métodos e outros membros).
Fornecem a definição da estrutura das instâncias que serão criadas dinamicamente, os objetos.
Suportam os mecanismos de herança e polimorfismo, que permitem uma classe derivada estender e especializar uma classe base.
A declaração de uma classe especifica os atributos e modificadores da classe, o nome da classe, a classe base (se herdar de alguma) e as interfaces implementadas (se existir).
Instâncias da classe, objetos, são criadas usando o operador “new”.
A criação de uma instância aloca memória para o objeto criado, invoca o construtor para inicializar o objeto e retorna a referência para a instância.
O objeto alocado, quando não mais referenciado, será limpado da memória pelo objeto Garbage Collector.
Tem-se: constantes, campos, métodos, propriedades, indexadores, eventos, operadores, construtores, destrutores e tipos.
Constantes: os valores constantes que são associados a classe.
Campos ou Atributos: as variáveis da classe.
Métodos: executados pela classe.
Propriedades: as ações para leitura e escrita de propriedades.
Indexadores: as ações associadas com instâncias indexadas da classe da mesma forma que um array.
Eventos: as notificações que podem ser geradas pela classe.
Operadores: os operadores de conversão e expressão suportados pela classe.
Construtores: as ações necessárias para inicializar as instâncias da classe ou ela mesma.
Destrutores: as ações executadas antes das instâncias da classe serem removidas.
Tipos: classes declaradas dentro de outra classe.
É um membro da classe que implementa uma ação que pode ser executada por um objeto ou pela classe.
Métodos estáticos são acessados através da classe.
Métodos de instância (não estáticos) são acessados através das instâncias da classe.
Pode ter uma lista de parâmetros, que representa os valores ou referências de variáveis que são passadas para o método; e um tipo de retorno, que indica o que é retornado pelo método.
O método que tem como tipo de retorno void, indica que não retorna um valor.
A assinatura do método deve ser única na classe, e é formada pelo nome e número, modificadores e tipos dos parâmetros.
Métodos: parâmetros
São usados para passar valores ou variáveis por referência para os métodos.
Os parâmetros obtém seus valores dos argumentos que são passados para os métodos no momento da execução.
Existem 4 tipos de parâmetros: por valor, por referência, de saída e arrays.
Métodos: sobrecarga
Permite que métodos numa mesma classe tenham o mesmo nome mas assinaturas diferentes.
Quando sobrecarregados, os métodos são localizados pelo compilador de acordo com a sua lista de parâmetros.
Um método específico pode ser selecionado através da conversão dos parâmetros esperados.
Exemplo derivação, se você tiver uma classe base Animal, você pode ter uma classe derivada chamada Mamíferos e outra classe derivada chamada Répteis. Um Mamífero é um Animal e um Réptil é um Animal, mas cada classe derivada representa especializações diferentes da classe base.
Exemplo: podemos dizer que uma classe chamada Vendedor e outra chamada Diretor podem ter como base uma classe chamada Pessoa, com um método chamado CalcularVendas. Se este método (definido na classe base) se comportar de maneira diferente para as chamadas feitas a partir de uma instância de Vendedor e para as chamadas feitas a partir de uma instância de Diretor, ele será considerado um método polimórfico, ou seja, um método de várias formas.
As interfaces são padrões definidos através de contratos ou especificações. Um contrato define um determinado conjunto de métodos que serão implementados nas classes que assinarem esse contrato. Uma interface é 100% abstrata, ou seja, os seus métodos são definidos como abstract, e as variáveis por padrão são sempre constantes (static final).
Por exemplo: Uma pessoa usa um telefone. A tecla "1" é parte de um telefone
Representa uma instância de uma classe.
Identidade: todo objeto é único e pode ser distinguido de outros objetos.
Estado: determinado pelos dados contidos no objeto.
Comportamentos: representados pelos serviços / métodos / operações que o objeto disponibiliza.
Representa alguma coisa do mundo real. Exemplo: aluno, cliente, computador, carro.
Quais as 3 primeiras linguagens modernas de programação? Fortran, Lisp, cobol
Qual a linguagem que vamos trabalhar? C#
Qual a linguagem que trabalharemos em DB? SQL
O que é abstração? Retirar do mundo real apenas o que for relevante
O que são classes? Uma classe é um conjunto de objetos que compartilham as mesmas operações.
O que é Objeto? Representa uma instância de uma classe.