terça-feira, 10 de março de 2015

DNS CONFIGURAÇÃO DE INTERNET RAPIDA OPENDNS OPEN DNS

Quem nunca reclamou da velocidade de sua conexão com a internet é um afortunado. E pode parar de ler esse post neste ponto, já que a dica do dia é para os usuários que querem tentar uma forma de fazer com que o carregamento das páginas ocorra mais rapidamente.

Para isso, primeiro é preciso entender como o DNS (ou Domain Name Servers) funciona. Se você tem um site, certamente já teve que esperar o DNS propagar, mas para a maioria das pessoas esse elemento da internet fica completamente despercebido.

Basicamente, quando você acessa um site através do endereço dele (comohttp://tecnoblog.net) ou endereço de e-mail (como noreply@tecnoblog.net), na verdade esses nomes são apenas para facilitar a memorização. Ao pressionar o botão “Ir” do seu navegador, ele faz a requisição de acessar o site e começa a procurar o endereço real, que é um conjunto de números: o IP (o IP do servidor do Tecnoblog, no momento em que esse post foi escrito, era 70.32.75.243).

Como eu disse, isso é invisível para a maioria de nós. A grande possibilidade de acelerar a conexão a partir do uso de um provedor de DNS decente é que ele faz com mais facilidade o caminho entre o endereço do site, em palavras, e a localização do servidor do site, em números.

Sempre que o usuário faz sua conexão com a internet, utiliza como padrão o provedor de DNS do prestador de serviço de internet. Quem se conecta pela internet discada do Ig, por exemplo, acaba utilizando o provedor de DNS do próprio Ig; quem se conecta viaSpeedy, a banda larga da Telefônica, utiliza o provedor de DNS da própria Telefônica. O problema é que os serviços de DNS desses provedores geralmente são lentos e não se mantêm atualizados, de modo que demora demais para que o acesso a um site seja feito.

Pensando nisso, foi fundada em 2006 a OpenDNS. É uma empresa de internet que presta somente o serviço de resolução de DNS. Eles possuem um enorme banco de dados, que armazenam as requisições e as tornam muito mais rápidas. Sem falar que possuem seis servidores centrais nos Estados Unidos e no Reino Unido (quando os provedores de internet brasileiros costumam ter apenas um servidor desse tipo).

Entendendo toda essa parte sobre como DNS funciona e qual é o objetivo da OpenDNS, vamos à parte prática: trocar o provedor de serviço DNS padrão da sua conexão pelo oferecido pela OpenDNS é simplíssimo. Pode ser feito de duas maneiras: no firmware do modem, ou nas configurações do computador.

OpenDNS no modem/roteador

Para quem usa internet banda larga, a melhor opção é inserir as configurações da OpenDNS no próprio modem. Como os softwares que os modems rodam são bastante diferentes, fica complicado dizer como fazer a alteração em cada aparelho existente no mundo. O importante é procurar algo como “DNS Setup” ou “DNS Configuration”.

Configurando a OpenDNS no modem D-Link G624T

Em casa eu uso o modem/roteador D-Link G624T. A configuração nele fica como na imagem acima. Na primeira linha para inserir o servidor DNS, eu coloquei208.67.222.222. Na segunda linha, insira 208.67.220.220. Após confirmar as informações e pressionar “Apply”, o modem já está usando a OpenDNS como serviço de DNS padrão – e para todos os computadores da rede.

A OpenDNS montou uma enorme lista com os principais modems e roteadoresvendidos atualmente. Ainda que seja em inglês, dá para visualizar nessa página como configurar o seu aparelho.

OpenDNS no computador

Mais uma vez, cada sistema operacional tem sua própria forma de chegar às configurações de DNS. Na OpenDNS você encontra instruções, mas todas em inglês. Como o Windows XP ainda é o OS mais usado no mundo, vamos saber como mudar o serviço de DNS nele: vá em Iniciar Painel de Controle > Conexões de Rede > clique com o botão direito do mouse na conexão que você utiliza e selecione Propriedades. Na guia Geral há uma listagem de itens que a conexão usa. Você precisa clicar no último deles, o Protocolo TCP/IP.

Marque a caixa que diz “Usar os seguintes endereços de servidor DNS”. Em seguida, insira os seguintes dados:

·         Servidor DNS preferencial: 208.67.222.222.

·         Servidor DNS alternativo: 208.67.220.220.

Clique nos botões “OK” duas vezes e pronto. Seu computador já está usando a OpenDNS como provedor de serviço DNS. Caso você esteja usando o Windows Vista, o procedimento é bastante semelhante. A única diferença é que, quando entrar no Painel de Controle, você deve selecionar na barra lateral para visualizar as opções em formato Clássico. Também é preciso prestar atenção para selecionar o Protocolo de Internet Versão 4 (ou TCP/IPv4). Deve ficar parecido com a imagem abaixo.

Configurando a OpenDNS em cada PC individualmente (Windows Vista)

Ok, já instalei. E agora?

É provável que o seu computador ainda leve um tempo para utilizar completamente a resolução de servidores DNS da OpenDNS. Para agilizar esse processo, pressione e segure a Winkey (tecla com o símbolo do Windows, que fica ao lado do Ctrl esquerdo) seguida da letra R. Quando a caixa de diálogo Executar abrir, digite cmd e pressioneEnter. Agora, digite ipconfig /flushdns e pressione Enter novamente. Muito provavelmente o computador limpou os resquícios de resoluções DNS que estavam salvos nele.

Para confirmar de vez que você já está usando o serviço provido pela OpenDNS, tanto através da mudança de configuração no computador quanto no modem, abra seu navegador e tente acessar o endereço http://www.opendns.com/welcome/. Se você der de cara cara com a imagem abaixo, é sinal de que deu tudo certo. A partir de agora sua navegação será mais rápida, porque você chegará ao site que deseja visitar com mais rapidez.

Mensagem de boas vindas da OpenDNS. Clique para ampliar.

Claro que se você tem uma conexão discada, não adianta que não vai conseguir acessar uma página como se tivesse conexão de 100mbps japonesa. Mas a dica continua valendo, principalmente porque não corremos mais o risco de ficar sem acessar um site porque o IP dele mudou mas o servidor DNS mequetrefe que atende o provedor de internet não foi atualizado.

Num próximo artigo aqui no Tecnoblog, irei tratar de outras funcionalidades gratuitas que a OpenDNS oferece e que poderão facilitar sua navegação diária ou mesmo ajudá-lo a proteger seus filhos de conteúdo impróprio ou indesejável.

 

domingo, 2 de junho de 2013

segunda-feira, 10 de outubro de 2011

CAMERAS SPEED DOME

As câmeras Speed Dome possuem um jumper traseiro, com 3 chaves, a de baixo representa as unidade, a do meio as dezenas e a de cima representa as centenas, é só configurar as chaves com o numero de acordo que iremos ligar a câmera, igual a posição do plug BNC da central.

segunda-feira, 26 de setembro de 2011

SPEEDY - ADSL - ALGUMAS CONFIGURAÇÕES

Configuração de usuario e senha do Speedy na época em que trabalhei com isso:
pass: speedycorp
 
pass: internet
MEDIÇÕES DO SINAL ADSL PARA CERTIFICAÇÃO NA TELEFONICA:
 
SPEEDY VELOCIDADE    PERFIL        DOWN    DOWN MAX.   MARGEM    ATENUAÇÃO MAX.
 
250 KBPS                        352 / 1184    250                352                    12                        60
500 KBPS                        1184             800                   -                       12                        60
1 MEGA                          1184             1500                 -                       12                        60
2 MEGA                          2304             3000                 -                       12                        60
4 MEGA                          4608             5000                 -                       12                        60
8 MEGA                          9600             8000                 -                       12                        60
 
Obs: O cálculo da Resistência Enlace é: ATENUAÇÃO X 20, ex: 20 X 20 = Enlace é: 40
 
Configuração para entrar no setup do roteador d-link:
endereço: 10.1.1.1
user: admin
pass: admin
Configuração para entrar no setup do roteador Thomson:
endereço: 192.168.1.1 = normalmente entra direto
user: admin
pass: admin
 
 
CONFIGURAÇÃO DA CONEXÃO DO APARELHO WISE:
pass: e185
DNS: 200.204.1.10
 
TESTE DE PING:
Ping UOL:
200.221.2.45
200.154.56.80
187.31.64.125

sexta-feira, 6 de agosto de 2010

Experience - Desenvolvimento de Sistemas - Módulo 01

Módulo 1 - Conceitual - Linguagem de Programação

Conceitos de programação:

O que é o .NET Framework?

1.                  É um componente do Windows que suporta a construção e execução da nova geração de aplicações e Web Services XML.

2.                  Fornece um ambiente consistente para programação Orientada a Objetos.

3.                  Fornece um ambiente de execução que minimiza o processo de distribuição e evita conflitos de versão.

4.                  Fornece um ambiente seguro e sem os problemas que ambientes de tecnologias de script ou interpretado.

5.                  Promove uma experiência de desenvolvedor consistente entre os vários tipos de aplicação, seja aplicação Windows ou Web.

O Framework é dividido nestes componentes.

Base é o Sistema Operacional + os serviços providos por este sistema.

Common Language Runtime - CLR

.NET Framework Class Library – a camada que possui as bibliotecas de classes básicas onde usamos para declarar os tipos, e fazer a aplicação.

ADO.NET: Data and XML – PARA ACESSO A DADOS E MANIPULAÇÃO DE ARQUIVOS XML

ASP.NET -

XML WEB SERVICES E USER INTERFACE – PERMITE QUE SE CONSTRUA APLICAÇÕES WEB COM INTERFACE GRÁFICAS OU SERVIÇOS WEB.

E CAMADA DE APLICAÇÕES DÃO SUPORTE PARA QUE SE POSSA USAR AS FERRAMENTAS A SEGUIR: VISUAL BASIC, C++ C# PERL, J#, ETC... BEM COMO AS MAIS DE 60 LINGUAGENS EXISTENTES HOJE.

CLR – COMMON LANGUAGE RUNTIME

Componente chave da plataforma. NET, pois gerencia e da suporte a uma gama de serviços como gerenciar memória execução de threads, execução do código, verificação de código seguro, compilação, entre outros serviços.

Em seus componentes chaves temos, Type Checker (verificador de tipo), Thread Support, Security Engine, Suporte as classes básicas, engenho de depuração, gerenciador de código, conversor de intermediate language Native Compilers, Code Manager, Garbage Collector (que é o responsável pelo gerenciamento da memória, quando criamos os objetos ele é colocado numa área chamada rip que é gerenciado pelo garbage collector).

Ferramentas de Desenvolvimento

Em destaque estão as ferramentas do express edition, Visuaj J#, Visual C#, Visual C++, Visual Basic, SQL Server 2005, que são para desenvolvimento de aplicações Windows.

E também Visual Web Developer 2005 e o ASP.net AJAX, para desenvolvimento de aplicações Web

Introdução do Visual C#

O que é Visual C#?

É uma das linguagens de programação da Plataforma .NET Framework. Tem sua origem nas linguagens C e C++ e destaca-se por ser fácil robusta e 100% orientada a objetos. Ideal para programadores que já tem experiência em C, C++ ou Java.

Um programa em C#

Tem a declaração de um namespace, a declaração de uma classe “Program”, no método (o método é o comportamento da classe: ex: A Classe é: “Console”, o Médoto é: “Write”, ou “Writeline”, temos a declaração de uma variável do tipo string, 

String msg = “Bem-Vindo ao  Experience”;

Executando o método da classe Console.Write e passa uma string como parâmetro

Console.Write(“Digite seu nome: “);

Declara uma classe do tipo String “nome”  junto com a classe “Console” e o método “ReadLine”, que junto com o console, para a tela e permite que o usuário digite a informação que irá para a variável nome já declarada na mesma linha. O chaves com os números, 0 ou 1 ou 2 ou 3, refere-se a quantidade de parâmetros. Ex: no caso baixo:

 

            String msg = "Bem-Vindo ao  Experience";

            Console.Write("Digite seu nome: ");

            String nome = Console.ReadLine();

            Console.WriteLine("Olá {0}! {1}", nome, msg);

 

O {0} se refere a variável (ou parâmetro) nome, e o {1} se refere a variável (ou parâmetro) msg


 

A estrutura do Programa em C#

Os conceitos chaves em C# são programas, namespaces, tipos, membros e assemblies.

Os programas são formados por um ou mais arquivos

Programas vão declaram tipos, que contém membros e podem ser organizados em namespaces.

Campos, métodos, propriedade e eventos são exemplos de membros de um tipo.

Quando compilados os programas em C# geram assemblies, que são arquivos com extensão .exe (aplicações) ou .dll (bibliotecas).

O assembly contém um código executável em forma de IL (Linguagem Intermediario) e informações simbólicas na forma de metadados, onde não é gerado o código em linguagem de máquina ainda.

Antes da execução da aplicação o código em IL é gerado automaticamente e convertido (compilado) em código nativo (específico) do processador através dos componentes do CLR JIT (Just in time).

Processo de Compilação

Teremos o codigo em Visual C#, onde temos os recursos e as referencias, às compilações.

O compilador C# ira transformar o codigo em exe ou DLL em uma linguagem IL (Intermediate Language).

O CLR irá carregar as informações, e executá-lo usando o (Security, Gabage Collection, JIT Compile (Just In Time Compiler) que irá fazer de tudo para que os recursos do .NET Framework sejam executado de forma compatível com o Sistema Operacional e com o processador em linguagem de máquina.

Tipos de Variáveis

Tipos por Valor: Acesso direto ao dado, Cada uma tem sua própria cópia do dado, Operação em uma não afeta a outra. São tipos integrais que não tem referência do valor na memória.

Tipos por Referência: Armazena uma referência para um determinado objeto na memória em um local chamado RIP onde os objetos são alocados, e quando trabalhamos com esse tipo de variável nos estamos na verdade acessando o endereço no RIP deste objeto, Duas variáveis podem apontar para o mesmo objeto, Operação em uma pode afetar a outra.

Tipos Inteiros

Regras e Recomendação para nomear variáveis

- Use letras, underscore e dígitos para nomear

- Evite usar todo em letra maiúcula

- Evite começar com “_”

- Evite abreviações

- Use o padrão PascalCasing para palavras compostas ou seja se tiver uma variável com nome composto, cada nome deve começar com letra maiúscula. Exemplos:

CERTO             ERRADO

Posicao42    42Posicao

Diferente    NUNCAUSE

Diferente    _naouse

MuitoBom     Msg

Mensagem    

Operadores:

 

Existe uma idéia de precedência entre eles (ou seja, o que tem prioridade na execução).

 

Expressões

As expressões são formadas por operandos e operadores.

- Operandos: literais, campos, variáveis, locais e outras expressões.

- Operadores: +, -, *, /, new

Quando uma expressão contém vários operadores, a precedência dos operadores controla a ordem em que cada operador individual será avaliado.

- int num = x+y*z é avaliado como x+(y*z)

- Cliente cli = new Cliente(“Pedro”, “0394)

 

Comandos

As ações de um programa são expressadas através de comandos (ou statements). O C# possui vários tipos de comandos.

Um bloco (onde se define o comando) é delimitado pelo “{}”, e é utilizado para escrever um conjunto de comandos.

Tipos de comandos: declaração, expressão, seleção, repetição, transferência de controle, try-catch, try-finally, checked, unchecked, lock e using.

 

Declaração da Variável

Para declarar a variável dizemos primeiro qual o tipo da variável, se é int, string, char etc, damos um espaço e colocamos o nome da variável, ex: variável “a”.

Para finalizar a linha de comando colocamos um ponto-e-vírgula: “;”.

 

//Declaração da Variável Local

static void Main()

{

int a;

int b = 5, c = 29;

a = 1;

Console.WriteLine(a + b + c);

 

 

Declaração da Constante

Usa a palavra “Const” e um tipo para definir a constante “float” ou “int” ou “string”, etc seguido de espaço e o nome da constante pode-se colocar o sinal “=” e atribuir valor a constante depois segue o “;” para terminar a linha.

//Declaração de uma Constante Local

            const float pi = 3.1415927f;

            const int raio = 25;

            Console.WriteLine(pi * raio * raio);

 

Declaração do Comando IF

Se a expressão for verdadeira ele executa a primeira parte, se não executa a segunda parte do comando.

 

//Declaração do comando if

            if (args.Length == 0)

            {

                Console.WriteLine("Nenhum argumento");

            }

            else

            {

                Console.WriteLine("Um ou mais argumentos");

            }

 

Declaração do Comando Switch (aninhamento de ifs)

Uma instrução case “Swith” seria um aninhamento de IFs (ou vários ifs), se a variável obtiver os vários valores previsto ele ira executa o comando pra o valor descrito no case, se não entrar nenhum valor previsto, o case irá executar  o comando padrão.

 

            //Declaração do comando Switch (case, aninhamento de If)

            int totArgs = args.Length;

            switch(totArgs){

                case 0:

                    Console.WriteLine("Sem argumentos");

                    break;

                case 1:

                    Console.WriteLine("Um argumento");

                    break;

                case 2:

                    Console.WriteLine("(0) argumentos", totArgs);

                    break;

 

Declaração do Comando While

While é um comando que é usado para repetir uma condição aconteça, é uma estrutura de repetição. No caso abaixo, enquanto arg.Length for menor do que i o comando while irá se repetir.

 

        //Declaração do comando While

                    int i = 0;

                    while (i < args.Length)

                    {

                        Console.WriteLine(args [i]);

                    i++;

                    }

 

Declaração do Comando do..While

Parecido com o While com a diferença que ele executa pelo menos uma vez, do Do até o While, depois disso se a condição for verdadeira ele passa a executar o próximo comando até o fim.

            //Declaração do comando do...While

                    String entrada;

                    Do {

                        entrada = Console.ReadLine();

                        if (entrada != null) Console.WriteLine(entrada);

                    } while (entrada != null);

Declaração do Comando for

O For é dividido em duas partes pois temos o for que ele tem a declaração da variável de controle, a condição, se ele é menor que alguma coisa e o operador de incremento, ele vai repetir até que essa condição seja verdade, irá fazer o incremento até que seja verdade.

 

            //Declaração do comando for

            for (int i = 0; i < length; i++)

            {

                Console.WriteLine(args [i]);

            }

 

Declaração do Comando foreach

Permite navegar em coleções ou arrays, que é uma forma melhorada de navegar em coleções especializadas, no caso abaixo, permite navegar em cada elemento do array que será dada na variável param, depois é só imprimir o valor da variável “param” (no caso abaixo).

 

            //Declaração do comando foreach

            foreach (string param in args)

            {

                Console.WriteLine(param);

            }

 

Declaração do Comando break

Permite que eu saia de uma instrução de repetição, no caso abaixo, irei usar o while até que o s seja igual null, assim que for null o break é interrompido.

 

            //Declaração do comando break

            while (true)

            {

                string s = Console.ReadLine();

                if (s == null) break;

                Console.WriteLine;

            }

 

Declaração do Comando continue

Permite que execute uma instrução de repetição da seguinte maneira, se a condição acontecer, vou pedir que interrompa a interrupção e vá para o próximo item da interrupção. Por exemplo se tiver no for do item 0 e o caracter “/” está na string, o continue irá fazer que ele vá para o for 2 e ele não irá imprimir o continue da linha que tem o WriteLine.

 

            //Declaração do comando continue

            for (int i = 0; i < args.Length; i++)

            {

                if (args[i].StartsWith("/")) continue;

                Console.WriteLine(args[i]);

            }

 

Declaração do Comando return

Permite eu retorna um sair de um método, ou retornando um valor ou não retornando.

 

            //Declaração do comando return

            public static int Somar (int a, int b)

            {

                return a + b;

            }

            static void Main (string [] args)

            {

             Console.WriteLine(Somar(20, 30);

            }

 

Declaração do Comando try-catch

Onde se pode proteger um trecho de código e se o erro acontecer entre o try e catch ele ira se capturado e irá exibir o erro.

 

 

 

Declaração do Comando checked ou unchecked

Quando tiver trabalhando com tipos inteiros por exemplo, se houver uma exceção pelo tipo se estourado eu quero que ele trunque o tipo se não eu uso o unchecked se eu quiser que ele não trunque.

 

Declaração do Comando lock

Quando eu quero garantir que o acesso a uma determinada parte do código seja bloqueada para que múltiplas treads não a acessem ao mesmo tempo, uso o lock até que a tread que conseguiu o lock, consiga executar a parte do comando.

 

Conceitos básicos da programação orientada a objetos – parte 1:

 

O que são Classes?

São os tipos mais importantes do C#

É uma estrutura de dados que combina estado (campos) e comportamentos (métodos e outros membros que fornecem funcionalidades).

Fornecem a definição da estrutura das instâncias que serão criadas dinamicamente, 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 específica os atributos e modificações da classe, o nome da classe, a classe base (se herdar de alguma) e as interfaces implementadas (se existir).

Quando você tem a classe você pode criar (instanciar) instancias objetos daquela classe. Que são criados através do operador new, isso basicamente significa alocar espaço na memória.

Intâncias de 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 instância.

Objeto alocado, quando não mais referenciado, será limpado da memória pelo Garbage Collector (responsável por gerenciar a memória RIP).

Os membros de uma classe podem ser Membros de Instância ou Membros Estáticos.

Dentre os membros de uma classe, tem-se: Contantes, Campos, Métodos, Propriedades, Indexadores, Eventos, Operadores, Construtores, Destrutores e Tipos.

 

 

O que são Objetos?

O objeto 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, etc.

 

 

 

 

 

O que são construtores?

C# suporta construtores de instância, privado ou estático.

Construtores de instância são utilizados para criar e inicializar instâncias de uma classe.

O construtor sem parâmetros é o construtor padrão.

Se a classe não define um construtor, o construtor padrão é gerado automaticamente pelo CLR e os campos são inicializados com valores padrão.

É declarado da mesma forma que o método, exceto que não tem tipo de retorno (e nem void) e deve te o mesmo nome da classe.

Construtores de instância podem ser sobrecarregados e são invocados com o operador new.

Construtores da classe derivada podem chamar construtor da classe base.

 

O que são Interfaces?

A interface define um contrato que pode ser implementado pelas classes e structs.

Pode conter métodos, propriedades, eventos e indexadores.

Não fornece implementação para os membros definidos, somente assinaturas.

Basicamente, define os membros que devem ser implementados pelas classes e structs que a implementam (quer dizer, o contrato).

Classe e structs podem implementar mais de uma interface.

Quando uma classe ou struct implementa uma interface, instâncias da classe ou struct podem ser implicitamente convertidas para o tipo da interface.

 

 

 

Visibilidade dos Membros

Cada membro da classe tem uma visibilidade associada a ele, que controla as áreas de código que podem acessá-lo.

 

 

 

 

 

 

O que são campos?

O campo é uma variável que está associada a classe ou a uma instância da classe.

Um campo declarado com static é um campo estático. Ou seja, não importa quantas instâncias da classe sejam criadas, existe somente uma cópia do campo.

Um campo declarado sem static é um campo de instância. Toda instância da classe contém uma cópia separada dos campos da classe.

 

O que são Métodos? 0:25:29

É um membro de classe implementa uma ação (ou comportamento) que pode ser executada por um objeto ou pela classe. São as operações que as classe pode disponibilizar para os objetos ou para ela mesmo (desde que estes sejam privados).

Métodos estáticos (static) são acessados através da classe (são métodos de classe).

Métodos de instância (não estático) são acessados através das instâncias da classe para que eles possam ser executados.

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 do Métodos    0:27:33

Os 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 quatro tipos de parâmetros: por valor (inteiro, longo, Double, struct, enum), por referência, de saída (são usados com as palavras chaves out ou ref) e arrays (são objetos por referência).

 

Métodos: Sobrecarga de Métodos   0:28:09:

 

 

Permite que métodos numa mesma classe tenham o mesmo nome, mas assinaturas diferentes (formas diferentes de ser executados, de ser chamado, pois tem diferentes parâmetros).

A sobrecarga permite que métodos da mesma classe tenham o mesmo nome mas assinaturas diferentes.

Quando sobrecarregados os métodos são localizados pelo compilador de acordo com a quantidade de parâmetros.

Um método específico pode ser selecionado através da conversão dos parâmetros esperados.

Quando sobrecarregados, são localizados pelo compilador de acordo com a quantidade de parâmetros, e tenta localizar por aqueles parâmetros.

 

O que são propriedades? 0:29:21

Representam uma extensão dos campos (os campos não devem ser públicos, devem ser encapsulados (ou seja, ocultos), mas que tenham uma forma de acesso na classe, através de leitura ou escrita, para isso, usa-se as propriedades).

A propriedade tem o mesmo tipo do campo, e a sintaxe para acessá-la é a mesma do campo.

Diferentemente dos campos, as propriedades não representam um local de armazenamento, e têm comando específico para leitura (get) e escrita (set).

Declarada da mesma forma que um campo, exceto que a declaração termina com get e/ou set.

C# suporta propriedades de instância (sem static) e propriedades estáticas (com static).

Podem ser declaradas com virtual, abstract ou override.

 

O que são enum e struct?        0:30:07

Enum:

- Define uma lista de constantes nomeadas.

- Pode ser definido como qualquer tipo integral, exceção char. O tipo padrão é o int.

Em vez de trabalhar com o numero do código, pode-se trabalhar com nomes o que é mais fácil de entender.

 

Struct:

- Uma struct compartilha a mesma quase todas as características de uma classe, mas com algumas restrições (é semelhante a uma classe mas com algumas limitações, é o que chamamos de value type – ou seja do tipo inteiro). Ideal para declarar tipos pequenos que não tenha necessidade de um tipo como  uma classe.

- Objetos do tipo struct são destruídos automaticamente pelo compilador, até porque é um Tipo por Valor.

- Structs não podem herdar de outra classe ou outra struct.

 

 

O que é um Namespace?  0:32:03

O namespace é um mecanismo que permite declarar um escopo, onde você organiza os tipos e declara tipos únicos.

Em um namespace são declarados: outro namespace, class, interface, struct, enum e delegate.

O nome de um namespace pode ser qualquer identificador e pode conter “.” no nome.

Mesmo se não for declarado um namespace, um padrão será criado.

É possível declarar um ou mais namespaces numa mesma declaração.

Pode-se agrupar por conceitos ou por finalidade ou qualquer outra características que desejar-mos , e facilita a programação, evita erros.Ex:

Namespace.projeto.produto

 

Demonstração Visual C# Express:

 

Demonstração  0:33:14

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace ConsoleApplication1

{

    class Program

    {

        //A classe Program tem o método void Main (isso quer dizer que a classe será compilada e irá gerar um arquivo executável.

        static void Main(string[] args)

        {

            Console.WriteLine("Bem vindo ao  Experience");

            String strVar = RetornarString();

            //Para concatenar duas Strings usa-se o sinal de "+"

            //O C# é case rsentitive, ou seja, na hora de declarar variáveis tem que tomar cuidado

//com a diferenciação que ele faz

            //entre letras maiúsculas e minusculas.

            Console.WriteLine("Valor: " + strVar);

            Console.ReadLine();

                }

        public static String RetornarString()

{

            //Executa processamento

            return "String qualquer";

        }

        //Para executar o código escrito é só clicar no botão "Start" ou pressionar "Ctrl+F5".

        //Cold sneep é o recurso do C# que faz que as estruturas dos códigos sejam autocompletadas

//assim que se inicia o nome do código e pressiona a tecla "Tab".

    }

}

 

Manipulando Vários Objetos:

O que são Arrays?    0:40:00

Um array é uma sequência de elementos:

-Todos os elementos são do mesmo tipo

-Structs podem ter elementos de tipos diferentes

-Cada elementos do array é acessado através de um número inteiro que representa o índice.

É uma forma de trabalhar com vários objetos ao mesmo tempo, você terá a necessidade de passar vários parâmetros como um método. O struct é a única classe que poderá ter elementos de tipos diferentes.

Exemplo de uma array:

Numa array de 5 elementos o primeiro terá o número inteiro de índice 0 e o ultimo terá o número inteiro de índice 4.

O array quando se declara numa dimensão você escreve:

 

 

Array: Dimensões:    0:40:49


 

Arrays: Criação e Inicialização        0:41:30

A declaração da variável array não cria o array:

-Você deve usar o operador new para criar a instância do array.

 

No exemplo abaixo você declara a array e já a inicializa, é uma versão resumida de escrever a array.

 

Quando eu trabalho com array de 2 dimensões, tenho que passar a mesma quantidade de valores para cada dimensão, veja abaixo que não posso declarar 3 valores na primeira dimensão e 2 na segunda pois eu terei um erro no meu código.

 

 

Aqui é um exemplo de um array de 2 dimensões onde eu já declaro e inicializo atribuindo os valores e depois navego no array. Através o GetLength onde ele me diz o tamanho da primeira dimensão..

 

 

 

 

 

 

 

 

 


 

O que são Coleções?       0:42:57

São classes especializadas para armazenamento e busca de objetos, com suporte a listas, filas, pilhas e tabelas hash entre outros objetos bastante conhecidos no meio acadêmico.

Permitem manipular vários objetos ao mesmo tempo, com métodos para adicionar, remover, modificar um elemento ou um intervalo.

São definidas nos namespaces System.Collections e System.Collections.Generic (.NET 2.0).

Boa parte das coleções implementam as interfaces ICollection, IComparer, IEnumerable, IList, IDictionary, IDictionaryEnumerator. Além das interfaces genéricas equivalents a estas.

Coleções genéricas são fortemente tipadas e melhoram a performance com tipos por valor.

Exemplos de coleções: ArrayList, List<T>, HashTable, Stack, Stack<T>, Queue, Queue<T>, CollectionBase, List<T>, Dictionary<T>, Collection<T>, ReadOnlyCollection<T>, LinkedList<T>, entre outras.

A medida que usarmos o C# iremos entender melhor o que são as coleções.

 

Coleções Genéricas:        0:44:25

São classes e métodos que combinam reusabilidade, tipagem forte e eficiência que não são oferecidos pelas coleções não genéricas.

Suportam tipos por valor sem a necessidade de boxing e unboxing.

São definidas nos namespaces Sytem.Collections e System.Collections.Generic (.NET 2.0).

Algumas coleções genéricas:

-List<T> a classe genérica que corresponde a ArrayList.

-Dictionary<Tkey, Tvalue> a classe generic que corresponde a HashTable.

-Collection<T> a classe generic que corresponde a CollectionBase.

-Queue<T>, Stack<T> e SortedList<T> são classes genéricas que correspondem as não genéricas de mesmo nome.

-LinkedList<T>, SortedDictionary<Tkey, Tvale> e KeyedCollection<T>

 

Coleções Genéricas:        0:44:25

São classes e métodos que combinam reusabilidade, tipagem forte e eficiência que não são oferecidos pelas coleções não genéricas. Perceba que se eu executar o código da direita no list 1 o índice 32 só pode ser adicionado itens da coleção de forma inteiro e temos uma string que não foi transformada em inteiro.


 

Trabalhando com arrays e coleções:

Demonstração: 0:46:40

 

Delegates e eventos:

O que são delegates?      0:52:42

 

Um tipo delegate representa uma referência para métodos com uma lista de parâmetros e retorno específicos.

Permite tratar métodos como entidades que podem ser atribuídas a uma variável ou passadas como parâmetros.

É um conceito similar ao conceito de ponteiros de função em algumas linguagens, mas diferem porque são OO e tipados.

Para o delegate só importa o método que ele referência, e não a classe.

 

 

 

O que são Eventos? 0:53:44

É um membro que permite uma classe ou objeto fornecer notificações.

É declarado da mesma forma que um campo, exceto que deve ter event na declaração e ser de um tipo delegate.

O campo do tipo evento armazena uma referência a um delegate que representa um manipulador do evento (event handler) que foi adicionado. Se não existir, o campo é null.

Event Handlers são atachados usando o operador += e removidos usando o operador -=.

O objeto que tem o evento (publicador) lança um evento, ou seja, uma mensagem aos objetos interessados (assinantes).

Conceitos Básicos da Programação Orientada a Objetos – Parte 2:

O que é Herança?    0:55:44

 Recurso das linguagens de programação Orientada a Objetos com o qual as classes podem ser especializadas e herde características de outra classe (ou generalizadas). Ou um conjunto de classes que tenham um comportamento ou dados em comum, e a partir dela permite que vc especialize estas classes.

Base conceitual para permitir a estensibilidade e reunibilidade.

Define um relacionamento do tipo “is-a” ou “a-kind-of”

Normalmente utiliza-se herança para:

1)  Criar especializações de classes e objetos existentes

2)  Adicionar novos dados e comportamentos, conhecido como estender ou especial

 

Herança no C#:        0:57:00

O caractere “:” é usado para iniciar que uma classe herda de outra. Por exemplo:

public class Elefante:Animal (elefante herdou de animal, ou seja, elefante é um tipo de animal)

Modificadores de Acesso fazem a diferença na relação da herança, e usaremos essas palavras chaves durante a herança: public, protected, internal, protected internal e private.

Modificadores: abstratc, virtual, override e sealed

 

Modificadores de Acesso:        0:57:53

Dada uma classe, A, os campos e métodos podem ter os seguintes modificadores:

       - public – O acesso é ilimitado para qualquer classe ou qualquer assembly

       - protected – O acesso é limitado aos métodos da própria classe ou os membros das classes derivadas, ou seja que são herdados, em qualquer assembly.

       - internal – O acesso é limitado a todas as classes no mesmo assembly.

       - protected internal – O acesso é limitado ao assembly ou aos membros das classes derivadas

       - private – O acesso limitado a própria classe.

 

Classes Abstratas:   0:59:24

 

 

- São classes definidas com o propósito de serem herdadas

- Uma classe abstrata não pode ser instanciada

- Cria-se uma definição comum que será compartilhada pelas classes derivadas.

- Pode definir métodos abstratos (declarados com abstract), não tem implementação e terminam com “;”.

- Uma classe sealed não pode (ou não faz sentido) ser abstract.

 

 

 

 

Classes Overriding:  1:01:10

Mecanismo que permite uma classe derivada redefinir (sobrescrever) um comportamento (método) herdado da sua classe base.

O modificador override é requerido para estender ou modificar a implementação abstrata ou virtual de um membro herdado: método, indexador, propriedade ou evento.

O método da classe base que é sobrescrito deve ser virtual ou abstract ou override.

O método da classe derivada que sobrescreve deve receber o modificador override.

 

Operador sealed:     1:02:20

- Pode ser aplicado a classes, métodos de instância e propriedades

- Uma classe sealed não pode ser herdada.

- Um método sealed pode sobrescrever um método de uma classe base mas ele não pode ser sobrescrito numa classe derivada.

- Quando aplicado a um método ou propriedade deve sempre ser usado com override.

- É um erro usar uma classe sealed como classe base ou usar com o modificador abstract.

 

O que é polimorfismo?     1:03:20

- Quando comportamentos relacionados variam segundo o tipo (classe), atribuir responsabilidades pelo comportamento. Várias formas de fazer algo mas ter o mesmo nome para essas várias formas.

- Dar o mesmo nome a serviços executados por diferentes objetos, quando estes são similares ou relacionados.

- Os diferentes tipos de objetos são, normalmente, relacionados em uma hierarquia que tenha uma superclasse comum (não é obrigatório, pois pode ser obtido através de interfaces ou vinculação dinâmica).


 

Praticando Orientação a Objetos com Visual C#

Demonstração: 1:05:25

 

Tratamento de Exceções

Por que usar Exceções?   1:12:35

- Uma forma ultrapassada e trabalhosa de manipular erros. O C# tem várias classes para trabalhar com exceções e a base delas é a classe Exception, e nessa hierarquia temos várias hierarquias especializadas.

 

 

Blocos try-catch-finally   1:12:35

-Solução OO para tratamento de erros.

-Cada bloco try-catch trata um tipo de exceção.

-O try para demarcar a parte do código que vc acredita que pode ser afetada por uma exceção.

-O catch usado para filtrar os erros de acordo com o tipo da exceção, que pode ser Exception ou qualquer classe derivada.

-O finally pode ser usado para executar código que será executado independente de acontecer erro.

-Você pode capturar uma exceção e lançar outra mais específica.

-Você pode tratar uma exceção parcialmente e relançá-la.

 

Manipulação e Formatação de Strings, Números, Data/Hora e Moeda

O tipo object    1:15:35

 

-O mesmo que System.Object.

-Classe base de todas as classes. Qualquer classe herda, direta ou indiretamente, de object.

 

 

 

 

 

O tipo object    1:16:10

Métodos comuns para todos os tipos por referência:

-ToString – Converte um objeto para String.

-Equals – Indica se duas referências são iguais.

-GetType – Retorna o tipo da instância.

-Finalize – Permite o objeto executar alguma limpeza ou liberação de recursos antes de ser removido da memória pelo Garbage Collector.

-Get HashCode – Função hash para um tipo específico.

 

O tipo string    1:15:35

- É o mesmo que System.String.

- Representa um conjunto de caracteres Unicode (System.char)

- O valor de uma string é o conteúdo de uma coleção seqüencial e é imutável (seu valor não é alterado).

- Os métodos oferecidos pela string que contém a alteração.

- Fornece métodos para comparar objetos strings, retornar a posição de um caractere ou um texto em uma string, copiar o valor da string, particionar uma string, formatação de número, data e hora (String.Format).

 

Concatenação de Strings 1:17:40

- A classe StringBuilder é adequada para concatenação de String quando não se conhece a quantidade de strings que serão concatenadas.

- Mantém um buffer para acomodar a concatenação de novos dados.

- Os caracteres individuais de um StringBuilder podem ser acessados através da propriedade Chars.

- A concatenação com strings sempre aloca memória, diferente do StringBuilder que só aloca quando o buffer é pequeno para alocar a nova string.

- A classe string é recomendada quando se conhece o número de strings que serão concatenadas.

 

Data e Hora com C# 1:19:47

- Data e hora podem ser manipulados com a struct DateTime.

- Cálculos numa variável DateTime não alteram o valor da variável, e sim retornam um novo DateTime com resultado do cálculo.

- TimeSpan representa um intervalo de tempo.

- Fornece várias propriedades e métodos para facilitar a manipulação de data e hora.

- DateTime.Now, DateTime.Year, DateTime.Month, DateTime.TimeOfDay, DateTime.Add, DateTime.AddDays, DateTime.DaysInMonth, DateTime.IsLeapYear (verificar se o ano é bisexto), DateTime.ToString.

 

 

 

 

Leitura e Escrita de Arquivos

Namespace System.IO     1:22:25

- Stream é uma classe abstrata para todos os tipos de streams, ou seja, uma abstração de uma sequencia de bytes (um arquivo), um dispositivo de entrada/saída, um fluxo de comunicação entre processos ou um socket TCP/IP.

- A classe stream e suas derivadas fornecem uma visão genérica de diferentes tipos de entrada/saída, isolando o programador dos detalhes do sistema operacional e dispositivos em questão.

- As operações possíveis num Stream podem ser consultadas através das propriedades CanRead, CanSeek, CanWrite.

- Os métodos Read e Write ler e escrever dados em vários formatos.

- O método Close libera os recursos do Sistema Operacional, tais como memória, conexões de redes e arquivos.

 

Namespace System.IO: Arquivos     1:23:53

- Algumas classes usadas para manipulação de arquivos:

- Directory – fornece métodos estáticos para criar, mover, e listar diretórios e subdiretórios.

- DriveInfo – fornece métodos para acessar informações sobre discos.

- File – fornece métodos estáticos para criar, mover, excluir, copiar e abrir arquivos.

- FileStream – fornece acesso randômico ao arquivo através do método Seek.

- GzipStream – fornece métodos para compactação e descompactação.

- SerialPort – fornece métodos para controle da porta serial.

 

Namespace System.IO: Stream        1:24:35

- BinaryReader e BinaryWriter – lê/escreve string codificadas e tipos primitivos.

- StreamReader e StreamWriter – lê/escreve caracteres para uma string, permitindo tratar Strings com a mesma API, então a saída pode ser um Stream em qualquer codificação ou uma String.

- TextReader – é a classe abstrata base para StreamReader e StringReader. As implementações da classe Stream usam byte para input e output, enquanto TextReader são projetadas para saída em caracter Unicode.

- TextWriter – é uma classe abstrata base para StreamWriter e StringWriter. As implementações da classe Stream usam byte para input e output, enquanto que as da TextWriter são projetadas para entrada de Unicode.

 

 

 


 

Leitura e Escrita de Arquivos texto com Visual C#

Demonstração:        1:27:36

Elipse: 3