<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: José Henrique Pinheiro Sampaio</title>
    <description>The latest articles on DEV Community by José Henrique Pinheiro Sampaio (@josee).</description>
    <link>https://dev.to/josee</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3447691%2F45455227-c5f5-49b6-a144-2bc0933b32ee.png</url>
      <title>DEV Community: José Henrique Pinheiro Sampaio</title>
      <link>https://dev.to/josee</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/josee"/>
    <language>en</language>
    <item>
      <title>API</title>
      <dc:creator>José Henrique Pinheiro Sampaio</dc:creator>
      <pubDate>Thu, 21 Aug 2025 11:34:28 +0000</pubDate>
      <link>https://dev.to/josee/api-1mhk</link>
      <guid>https://dev.to/josee/api-1mhk</guid>
      <description>&lt;h2&gt;
  
  
  O que é uma API?
&lt;/h2&gt;

&lt;p&gt;Uma API (sigla para Application Programming interface) é um conjunto de regras, padrões e ferramentas que permite que diferentes softwares se comuniquem entre si, ela funciona como ponte entre os sistemas e também define como os programas podem trocar informações e quais recursos estão disponíveis para uso, como exemplo podemos usar um restaurante, você é o cliente, a cozinha é o sistema que prepara os pratos (lógica interna) e o garçom é a API, que leva seu pedido até a cozinha e trás a comida pronta&lt;/p&gt;

&lt;h2&gt;
  
  
  Métodos HTTP e status code
&lt;/h2&gt;

&lt;p&gt;Uma API web funciona usando requisições HTTP, e dentro delas entram dois pontos principais: os métodos e os status codes. Os métodos HTTP são verbos que dizem ao servidor o que queremos fazer com um recurso. Por exemplo, o GET serve para buscar informações, o POST cria algo novo, o PUT atualiza um recurso inteiro, o PATCH atualiza apenas uma parte dele e o DELETE remove. Já os status codes são as respostas que o servidor envia depois de receber a requisição, e eles indicam se deu certo ou se houve algum problema. Quando tudo funciona, podemos receber um 200 OK (requisição bem-sucedida), um 201 Created (quando algo foi criado com sucesso) ou um 204 No Content (quando deu certo, mas não há nada para devolver, como em um DELETE), 404 Not Found (quando o recurso não existe) e etc. Assim, os métodos dizem o que você quer fazer e os status codes dizem como o servidor respondeu.&lt;/p&gt;

&lt;h2&gt;
  
  
  Como criar uma API com expressJS
&lt;/h2&gt;

&lt;p&gt;Para criar uma API com Express.js, você precisa ter o Node.js instalado. O Express é um framework para Node que facilita muito a criação de servidores e rotas. Um exemplo passo a passo:&lt;/p&gt;

&lt;p&gt;No terminal:&lt;/p&gt;

&lt;p&gt;mkdir minha-api&lt;br&gt;
cd minha-api&lt;br&gt;
npm init -y&lt;br&gt;
npm install express&lt;/p&gt;

&lt;p&gt;Criar o arquivo principal&lt;/p&gt;

&lt;p&gt;Crie um arquivo chamado server.js (ou index.js) e coloque o seguinte código:&lt;/p&gt;

&lt;p&gt;const express = require("express");&lt;br&gt;
const app = express();&lt;br&gt;
const port = 3000;&lt;/p&gt;

&lt;p&gt;app.use(express.json());&lt;/p&gt;

&lt;p&gt;app.get("/users", (req, res) =&amp;gt; {&lt;br&gt;
  res.status(200).json([&lt;br&gt;
    { id: 1, nome: "Ana" },&lt;br&gt;
    { id: 2, nome: "João" }&lt;br&gt;
  ]);&lt;br&gt;
});&lt;/p&gt;

&lt;p&gt;app.post("/users", (req, res) =&amp;gt; {&lt;br&gt;
  const novoUsuario = req.body;&lt;br&gt;
  res.status(201).json({ mensagem: "Usuário criado", usuario: novoUsuario });&lt;br&gt;
});&lt;/p&gt;

&lt;p&gt;app.put("/users/:id", (req, res) =&amp;gt; {&lt;br&gt;
  const { id } = req.params;&lt;br&gt;
  const dados = req.body;&lt;br&gt;
  res.status(200).json({ mensagem: &lt;code&gt;Usuário ${id} atualizado&lt;/code&gt;, dados });&lt;br&gt;
});&lt;/p&gt;

&lt;p&gt;app.delete("/users/:id", (req, res) =&amp;gt; {&lt;br&gt;
  const { id } = req.params;&lt;br&gt;
  res.status(204).send();&lt;br&gt;
});&lt;/p&gt;

&lt;p&gt;app.listen(port, () =&amp;gt; {&lt;br&gt;
  console.log(&lt;code&gt;🚀 Servidor rodando em http://localhost:${port}&lt;/code&gt;);&lt;br&gt;
});&lt;/p&gt;

&lt;p&gt;No terminal:&lt;/p&gt;

&lt;p&gt;node server.js&lt;/p&gt;

&lt;p&gt;Agora sua API estará rodando em &lt;a href="http://localhost:3000" rel="noopener noreferrer"&gt;http://localhost:3000&lt;/a&gt;.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Programação Orientada a Objeto</title>
      <dc:creator>José Henrique Pinheiro Sampaio</dc:creator>
      <pubDate>Wed, 20 Aug 2025 12:38:39 +0000</pubDate>
      <link>https://dev.to/josee/programacao-orientada-a-objeto-5bp5</link>
      <guid>https://dev.to/josee/programacao-orientada-a-objeto-5bp5</guid>
      <description>&lt;p&gt;A Programação Orientada a Objeto (POO) é um dos modelos mais utilizados para o desenvolvimento de softwares na atualidade. Ela ajuda a organizar o código de forma que aproxime a lógica da programação do mundo real. As classes fundamentais de POO são: classes, métodos, atributos, objetos, herança e encapsulamento.&lt;/p&gt;

&lt;p&gt;Na POO tudo gira em torno de objetos, que são instâncias de classes.&lt;/p&gt;

&lt;p&gt;As classes são como plantas arquitetônicas, um molde que define as características e comportamentos do objeto.&lt;/p&gt;

&lt;p&gt;Já atributos são informações (ou propriedades) que o objeto possui.&lt;/p&gt;

&lt;p&gt;Os métodos são as ações que o objeto pode executar.&lt;/p&gt;

&lt;p&gt;Exemplo de todos juntos:&lt;/p&gt;

&lt;p&gt;class Carro:&lt;br&gt;
    def &lt;strong&gt;init&lt;/strong&gt;(self, cor, modelo):&lt;br&gt;
        self.cor = cor&lt;br&gt;
        self.modelo = modelo&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;def acelerar(self):
    print(f"O {self.modelo} está acelerando!")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;meu_carro = Carro("vermelho", "Fiat Uno")&lt;br&gt;
meu_carro.acelerar()&lt;/p&gt;

&lt;p&gt;Nesse exemplo, Carro é a classe, cor e modelo são atributos, e acelerar() é um método.&lt;/p&gt;

&lt;h2&gt;
  
  
  Encapsulamento
&lt;/h2&gt;

&lt;p&gt;O encapsulamento é o princípio da POO que consiste em proteger os dados de um objeto, permitindo o acesso de forma controlada. Isso evita que informações sejam manipuladas de maneira indesejada.&lt;/p&gt;

&lt;p&gt;Na prática é assim, como exemplo de saldo:&lt;/p&gt;

&lt;p&gt;saldo: Público&lt;/p&gt;

&lt;p&gt;_saldo: Protegido por convenção (um underline)&lt;/p&gt;

&lt;p&gt;__saldo: Protegido com name mangling (dois underlines)&lt;/p&gt;

&lt;p&gt;Sem underline o saldo é público, com apenas um é protegido mas não totalmente, e com dois é o mais protegido.&lt;/p&gt;

&lt;p&gt;Na prática de um saldo totalmente protegido, ficaria assim:&lt;/p&gt;

&lt;p&gt;class ContaBancaria:&lt;br&gt;
    def &lt;strong&gt;init&lt;/strong&gt;(self, saldo):&lt;br&gt;
        self.__saldo = saldo&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;def depositar(self, valor):
    self.__saldo += valor

def get_saldo(self):
    return self.__saldo
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;conta = ContaBancaria(1000)&lt;/p&gt;

&lt;p&gt;print(conta.get_saldo())&lt;br&gt;
print(conta.&lt;em&gt;ContaBancaria&lt;/em&gt;_saldo)&lt;/p&gt;

&lt;p&gt;É importante lembrar que __saldo não é 100% privado, mas fica protegido contra acessos acidentais.&lt;br&gt;
Ou seja, o encapsulamento em Python é mais uma convenção do que uma proibição absoluta.&lt;/p&gt;

&lt;h2&gt;
  
  
  Herança
&lt;/h2&gt;

&lt;p&gt;A herança nada mais é do que uma classe que herda atributos ou métodos de outra, facilitando a reutilização de código e criando hierarquias de classes.&lt;/p&gt;

&lt;p&gt;Exemplo:&lt;/p&gt;

&lt;p&gt;class Animal:&lt;br&gt;
    def falar(self):&lt;br&gt;
        print("O animal fez um som.")&lt;/p&gt;

&lt;p&gt;class Cachorro(Animal):&lt;br&gt;
    def falar(self):&lt;br&gt;
        print("O cachorro latiu: Au au!")&lt;/p&gt;

&lt;p&gt;class Gato(Animal):&lt;br&gt;
    def falar(self):&lt;br&gt;
        print("O gato miou: Miau!")&lt;/p&gt;

&lt;p&gt;dog = Cachorro()&lt;br&gt;
cat = Gato()&lt;/p&gt;

&lt;p&gt;dog.falar()&lt;br&gt;
cat.falar()&lt;/p&gt;

&lt;p&gt;Nesse exemplo, tanto Cachorro quanto Gato herdaram da classe Animal, mas cada um sobrescreveu o método falar() com seu próprio comportamento.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusão
&lt;/h2&gt;

&lt;p&gt;A Programação Orientada a Objeto é o pilar da programação moderna e está presente em linguagens como Python, C++ e muitas outras.&lt;/p&gt;

&lt;p&gt;Em resumo:&lt;/p&gt;

&lt;p&gt;Classe: Organiza os objetos&lt;/p&gt;

&lt;p&gt;Encapsulamento: Protege os dados&lt;/p&gt;

&lt;p&gt;Herança: Facilita a reutilização de código&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
