Mostrando postagens com marcador interface. Mostrar todas as postagens
Mostrando postagens com marcador interface. Mostrar todas as postagens

segunda-feira, 28 de janeiro de 2019

Programando em Go (Golang) - Interface

Em golang uma interface é uma coleção de assinaturas de métodos. Em golango para se utilizar um intreface basta apenas implementar os métodos contidas na mesma.

Sintaxe:

type nome_interface interface{
  assinatura_metodo_1
  assinatura_metodo_2
  ...
  assinatura_metodo_n
}

Onde:

nome_interface - Nome da interface
assinatura_metodo_1 - Assinatura de um método.
assinatura_metodo_2 - Assinatura de um método.
assinatura_metodo_N - Assinatura de um método.

Exemplo:


package main

import ( "fmt"
         "strings")


type impressao interface{
    maiusculo() string
    minusculo() string
}


type usuario struct{
 nome, sobrenome string
}

type cidade struct{
 nome, estado string
}


func (c cidade) maiusculo() string{
  retorno:=strings.ToUpper(c.nome)+" - "+strings.ToUpper(c.estado)
  return retorno
}


func (c cidade) minusculo() string{
  retorno:=strings.ToLower(c.nome)+" - "+strings.ToLower(c.estado)
  return retorno
}


func (u usuario) maiusculo() string{
  retorno:=strings.ToUpper(u.nome)+" "+strings.ToUpper(u.sobrenome)
  return retorno
}


func (u usuario) minusculo() string{
  retorno:=strings.ToLower(u.nome)+" "+strings.ToLower(u.sobrenome)
  return retorno
}

func main(){
 cidade:= cidade{nome:"Lorena", estado:"São Paulo"}
 usuario:= usuario{nome:"Robson", sobrenome:"Gomes"}

 fmt.Println("\nDados da Usuario:\n")

 fmt.Println(" ",usuario.maiusculo())
 fmt.Println(" ",usuario.minusculo())

  fmt.Println("\nDados da Cidade:\n")


 fmt.Println(" ",cidade.maiusculo())
 fmt.Println(" ",cidade.minusculo())
 
}


Como foi possível ver acima foi criado um programa que conta com a interface  impressao:

type impressao interface{
    maiusculo() string
    minusculo() string
}


Nela é definida duas assinaturas de métodos simples, sendo que ambas retornam uma string. Logo os dois métodos são implementados pela estrutura usuario e cidade.

func (c cidade) maiusculo() string{
  retorno:=strings.ToUpper(c.nome)+" - "+strings.ToUpper(c.estado)
  return retorno
}


func (c cidade) minusculo() string{
  retorno:=strings.ToLower(c.nome)+" - "+strings.ToLower(c.estado)
  return retorno
}


func (u usuario) maiusculo() string{
  retorno:=strings.ToUpper(u.nome)+" "+strings.ToUpper(u.sobrenome)
  return retorno
}


func (u usuario) minusculo() string{
  retorno:=strings.ToLower(u.nome)+" "+strings.ToLower(u.sobrenome)
  return retorno
}



E a chamada as mesma é as mesmas são utilizadas no método main.

func main(){
 cidade:= cidade{nome:"Lorena", estado:"São Paulo"}
 usuario:= usuario{nome:"Robson", sobrenome:"Gomes"}

 fmt.Println("\nDados da Usuario:\n")

 fmt.Println(" ",usuario.maiusculo())
 fmt.Println(" ",usuario.minusculo())

  fmt.Println("\nDados da Cidade:\n")


 fmt.Println(" ",cidade.maiusculo())
 fmt.Println(" ",cidade.minusculo())
 
}



Abaixo é possível ver o resultado do método do programa acima:




Menu Principal

quinta-feira, 24 de fevereiro de 2011

Entendendo Interfaces




      Algo que muitas pessoas que iniciam na programação orientada a objeto é a famosa e não tão usada interface, mas afinal para que serve a interface ?

      Vamos pensar na interface como um complemento que uma determinada classe deve conter para ela existir fazer sentido em derminado contexto.
Vamos pensar num interface chamada AeroNave.


//Exemplo em Java
public interface AeroName{
  
    public void decolar();
  
    public void aterrisar();
  
    public void inicarMotor();
  
    public void desligaMotor();
}

       Uma interface não tem métodos prontos como pode ser visto acima, a mesma conta normalmente apenas com assinaturas de métodos, devendo este métodos serem implementados pelas classes que implementarem esta interface.
      Esta interface conta com varias assinaturas de métodos que deverão ser implementados pelas classes que vierem a implementar esta interface.

      A interface AeroNave e é implementada para classes Aviao, Helicoptero, AeroPlano, Foguete. Vale salientar que todas essas classes devem ter médos da interface AeroNave, cabendo a cada um implentar tais métodos. A maneira como implementa-se o método decolar na classe Aviao não é a mesma que implementamos a classe Helicoptero e nem na Foguete.
    Por fim interface nada mais que uma espécie de contrato de regras (classes) que uma classes deve seguir.