API – TreeSet, Set, SortedList – Java +, C++, C#

Publicado: 17 de fevereiro de 2014 em C#, C/C++, Java

O que é API?

Application Programming Interface (ou Interface de Programação de Aplicativos) é um conjunto de rotinas e padrões estabelecidos por um software para a utilização das suas funcionalidades por aplicativos que não pretendem envolver-se em detalhes da implementação do software, mas apenas usar seus serviços.

De modo geral, a API é composta por uma série de funções acessíveis somente por programação, e que permitem utilizar características do software menos evidentes ao utilizador tradicional.

Por exemplo, programas de desenho geométrico possuem uma API específica para criar automaticamente gráficos geométricos de acordo com padrões definidos pelo utilizador.

Introdução a API

Uma linguagem de programação é um método padronizado para comunicar instruções para um determinado hardware. As grandes empresas de tecnologia desenvolvem hardware e também desenvolvem linguagens de programação para que seu hardware possa ser controlado de um modo mais fácil e amigável do que linguagem de maquina.

Como a evolução do hardware as linguagens de programação também foram evoluindo, empresas começaram a disputar tecnologia de desenvolvimento de novos hardwares e esta historia é recheada de brigas por suas respectivas patentes, um exemplo de grandes disputas judiciais entre empresas que escrevem linguagens de programação foi a Oracle x Google, a  Oracle detentora das patentes do Java  e a Google criadora do sistema operacional Android, que usa Java (API) como parte do seu sistema operacional e base para a programação de softwares da plataforma Android.

  • A maioria os softwares voltados para desenvolvedores possuem sua própria API.
  • As APIs são usualmente específicas para uma determinada tecnologia.
  •  Um framework pode ser baseado em várias bibliotecas de aplicação e  várias APIs.
  • Uma API também pode ser uma implementação de um protocolo.
  • Uma API pode ser desenvolvida para um grupo restrito de utilizadores, ou ela pode ser liberada para o público.
  •  A prática de publicação de APIs permitiu comunidades na web criar uma arquitetura aberta para a partilha de conteúdos e dados entre as comunidades e aplicações.
  • A Microsoft tem mostrado um forte compromisso com uma API compatível com versões anteriores, especialmente dentro de sua biblioteca API do Windows (Win32).
  • A Microsoft tornou as APIs Microsoft Windows publicas.
  • A Apple lança suas APIs Carbon e Cocoa, para que softwares possam ser escrito para suas plataformas.
  • A Sony faz de suas API oficiais para PlayStation disponível apenas para desenvolvedores PlayStation licenciados.

Tipos de APIs – Coleções

Existem vários tipos de APIs, neste post especificamente vamos utilizar APIs chamadas de Containers ou Collections, estas APIs fornecem varias funções para se criar uma coleção de objetos e manipula-los de forma enumerada. A Coleção mais famosa no mundo da orientação a objeto é pertencente a biblioteca para C++ chamada STANDARD TEMPLATE LIBRARY, as coleção pertencentes ao JCF (Java Collection Framework) ou Generic Collections (.NET Framework) foram baseadas na STL para C++.

Diferenças entre APIs

Aqui vamos programar com uma API Java que possui sua equivalência na linguagem C++, mas não possui equivalência na linguagem .NET C#, para usar esta API em desenvolvimento Windows é necessário usar a própria API Java(Oracle), usando a linguagem J#, que permite usar Java na plataforma .NET. Para C# usaremos uma API compatível.

.NET J#: http://msdn.microsoft.com/en-us/library/aa986696(v=vs.80).aspx

Utilizando API

TreeSet  – Java

Uma classe que representa um conjunto classificado de elementos. Os elementos são classificados usando o comparador fornecido através de construtor ou usando os métodos de interface comparáveis ​​implementadas pelos elementos.

Pacote: java.util

set  – C++

O conjunto de classe container STL é usado para o armazenamento e recuperação de dados de uma coleção em que os valores dos elementos contidos são únicos e servem como os valores de chave de acordo com a qual os dados são automaticamente ordenados. O valor de um elemento em um conjunto não pode ser alterado diretamente. Em vez disso, você deve excluir valores antigos e inserir elementos com novos valores.

Include: <set>

SortedList – C#

Representa uma coleção de pares de chave / valor que são classificados por chaves e são acessíveis por chave e por índice.

Namespace: System.Collections

Exemplo:

Neste exemplo utilizaremos três APIs diferentes em linguagens diferentes para criar o mesmo programa, uma lista ordenada de bandas de rock dos anos 60, fica como nota, que a linguagem C# não possui uma API equivalente então vamos utilizar uma outra API compatível,  Para usar a API equivalente em .NET é necessário utilizar a linguagem J# que utiliza as patentes da Oracle.

Java

package org.desenvolvimentoaberto;

import java.util.TreeSet;

  public class Arvore {

  public static void main(String[] args) {

  TreeSet<String> paradas = new TreeSet<>();

  paradas.add("Beatles");
  paradas.add("Rolling Stones");
  paradas.add("The Doors");
  paradas.add("Jefferson Airplane");
  paradas.add("The Who");

  System.out.println("TOP " +  paradas.size() + " Anos 60");
  System.out.println();

  System.out.println("Primeiro Lugar: " + paradas.first());

  System.out.println("Ultimo Lugar: " + paradas.last());
  System.out.println();

  System.out.println("Cai uma posição: " + paradas.last());

  paradas.remove(paradas.last());  paradas.add("Beach Boys");

  System.out.println("Sobe " + paradas.size() + " posições: " + paradas.first());
  System.out.println();

  System.out.println("Paradas Anos 60:");

  for (String s : paradas)
  {
     System.out.println(s);
  }
 }
}

C++

#include "stdafx.h"
#include <iostream>
#include <string>
#include <set>

using namespace std;

int _tmain(int argc, _TCHAR* argv[]) {

  set <string> paradas;
  set <string>::iterator primeiroI;
  set <string>::iterator ultimoI;
  set <int>::size_type quantidadeI;

  paradas.insert("Beatles");
  paradas.insert("Rolling Stones");
  paradas.insert("The Doors");
  paradas.insert("Jefferson Airplane");
  paradas.insert("The Who");

  primeiroI = paradas.begin();
  ultimoI = paradas.end();
  ultimoI--;
  quantidadeI = paradas.size();

  cout << "TOP " << quantidadeI << " Anos 60" << endl;  cout << endl;
  cout << "Primeiro Lugar: " << *primeiroI << endl;
  cout << "Ultimo Lugar: " <<  *ultimoI << endl;

  cout << endl;

  ultimoI = paradas.end();
  ultimoI--;

  cout << "Cai uma posicao: " << *ultimoI << endl;

  paradas.erase(*ultimoI);
  paradas.insert("Beach Boys");

  primeiroI = paradas.begin();
  quantidadeI = paradas.size();

  cout << "Sobe " << quantidadeI << " posicoes: " << *primeiroI << endl;
  cout << endl;

  cout << "Paradas Anos 60:" << endl;

  for (auto i : paradas)
  {
   cout << i << endl;
  }

  system("pause");
  return 0;
 }

C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections;

namespace DesenvolvimentoAberto {

class Program
{
  static void Main(string[] args)
  {
    SortedList paradas = new SortedList();

    paradas.Add("Beatles","");
    paradas.Add("Rolling Stones","");
    paradas.Add("The Doors","");
    paradas.Add("Jefferson Airplane","");
    paradas.Add("The Who","");

    Console.WriteLine("TOP " +  paradas.Count + " Anos 60");
    Console.WriteLine();

    Console.WriteLine("Primeiro Lugar: " + paradas.GetKey(0));
    Console.WriteLine("Ultimo Lugar: " + paradas.GetKey(paradas.Count -1));
    Console.WriteLine();

    Console.WriteLine("Cai uma posição: " + paradas.GetKey(paradas.Count - 1));

    paradas.Remove(paradas.GetKey(paradas.Count - 1));

    paradas.Add("Beach Boys","");

    Console.WriteLine("Sobe " + paradas.Count + " posições: " +  paradas.GetKey(0));
    Console.WriteLine();

    Console.WriteLine("Paradas Anos 60:");

    for (int i = 0; i < paradas.Count; i++)
    {
       Console.WriteLine(paradas.GetKey(i));
    }

    Console.ReadKey();
   }
  }
}
Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

w

Conectando a %s