Tag Archives: metodo

TypeScript [O mais simples do mundo]

TypeScript

Continuando a saga para nos familiarizar com TypeScript.

A missão de hoje é aprender como desenvolver nosso primeiro programa TypeScript simples, o HelloWorld mais simples do mundo, incluindo alguns de seus conceitos básicos. Vamos lá:

Como este projeto não irá guardar dados, e sim, apenas um console exibindo uma informação.

HelloWorld_console

Este é o resultado final da App em execução.

APP.TS

Implemente:

class HelloWorldTS{
    constructor(public message: string)
    {        
    }
}

var saudacao = new HelloWorldTS("This is TS")
console.log(saudacao.message);

Primeiro eu declaro minha classe para criar uma mensagem. Em seguida, defino um construtor que deve receber uma string.

Depois eu crio um objeto e defino uma string no construtor da classe.

Finalmente, mostro a mensagem utilizando o método message.

Classes

Aqui temos o conceito de classes no TS, exatamente, a mesmo ideia de uma classe em qualquer linguagem OO.

As classes TS seguem o padrão ECMAScript 6 (em teoria será o “futuro do JS”). Note também que a classe tem uma sintaxe familiar com C#.

Em detalhes:

  • O construtor é definido pela palavra constructor.
  • Métodos não necessitam da palavra function, basta ().

Exemplo HelloWorld Transpilado

Neste outro exemplo disponível no site, temos uma visão mais completa do HelloWorld.

hello_world2

Declaro minha classe, defino uma propriedade e o seu construtor que recebe uma string, e defino também o método greet que possui apenas um retorno.

Não esqueça! O browser só conhece o JS e não o TS, neste caso ele irá transpilar do .TS para o .JS.

helloworld

Note no exemplo, não foi definido a visibilidade das propriedades da classe, nem o tipo de retorno do método greet. Mas, é possível definir estes parâmetros.

Pronto! Agora temos um HelloWorld TS criada.

Agora é só compilar e testar a APP.

Next stop TS. Disambarke on the left.

#09 – C# – Keyword – Virtual

Palavra-Chave: Virtual (Modificação)

Modo Mobile

Entenda um pouco sobre conceitos e utilização da palavra-chave virtual. Vamos lá:

Esta palavra-chave ou modificador virtual é aplicado para modificar uma declaração de método, propriedade, indexador ou evento e permitir que ela seja substituída em uma classe derivada (utilizando o override).

Declaração

Declaração simples:

public virtual double Area()   
{  
    return x * y;  
}

Agora temos um método que pode ser substituído por qualquer classe que o herde.

Exemplo simples

class ClasseBase
    {
        public virtual void Mensagem()
        {
            Console.WriteLine("Call Class Base");
        }
    }

    class ClasseDerivada : ClasseBase
    {
        public override void Mensagem()
        {
            Console.WriteLine("Call Class Derivada");
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            ClasseBase objBase = new ClasseBase();
            objBase.Mensagem();

            ClasseBase objDerivada = new ClasseDerivada();
            objDerivada.Mensagem();

            Console.Read();
        }
    }

Uma classe base que contém um método virtual Mensagem().

Uma classe derivada que herda da ClasseBase e substitui o método Mensagem().

cs_modificador_virtual

Durante a invocação do método virtual, o tipo de tempo de execução da instância para a qual essa chamada ocorrer irá determinar a implementação do método real a ser chamado. Então, quando Mensagem() for invocado:

  • Na primeira vez, o tipo de tempo de compilação é ClasseBase e o tipo de tempo de execução também é ClasseBase.
  • Na segunda vez, o tipo de tempo de compilação é ClasseBase e tipo de tempo de execução será ClasseDerivada.

Late Binding

Em resumo, o virtual irá receber uma ligação tardia. Decidindo qual implementação do método será aplicada em tempo de execução baseado no tipo do objeto apontado.

Métodos abstratos

Os métodos virtuais atuam de forma semelhante aos métodos abstratos nas classes base, exceto que a implementação nas classes derivadas será opcional.

Observações

Veja alguns pontos importantes:

Por padrão, um método NÃO É virtual e não podemos modificar um método não virtual.

Não é possível aplicar o virtual com os modificadores static, abstract, private ou override.

Ok! Um pouco sobre o Métodos Virtuais.