Aprendizado Constante em Cada Post Seu Guia Diário de Programação Novos Artigos de Código Todo Dia Desenvolvido pelo Blog Professor Clayton Andrade

Want to Partnership with me? Book A Call

Popular Posts

Dream Life in Paris

Questions explained agreeable preferred strangers too him her son. Set put shyness offices his females him distant.

Categories

Edit Template

Arquitetura em Camadas para aplicações JavaFX

A Arquitetura em Camadas para aplicações JavaFX é uma abordagem essencial na construção de softwares, especialmente em projetos que utilizam essa tecnologia. Essa estrutura proporciona uma organização mais eficaz do código, tornando a manutenção e a escalabilidade do projeto mais simples. Neste artigo, vamos explorar a importância da Arquitetura em Camadas, detalhar sua estrutura em um projeto JavaFX e apresentar um exemplo prático.

  1. O que é Arquitetura em Camadas?
  2. Estrutura do Projeto JavaFX
  3. Camada Model
  4. Camada DTO
  5. Camada DAO
  6. Camada Service
  7. Camada Controller
  8. Exemplo Prático de Implementação
  9. Conclusão

 

O que é Arquitetura em Camadas?

A arquitetura em camadas é uma forma de organizar o código em diferentes níveis, onde cada camada tem uma responsabilidade específica. Isso promove a separação de preocupações, permitindo que desenvolvedores trabalhem em partes diferentes da aplicação sem causar conflitos. Em um projeto JavaFX, as principais camadas incluem Model, DTO, DAO, Service e Controller. Esse tipo de organização em camadas também é conhecido como Camadas em N (N-Tier Architecture), referindo-se à flexibilidade de adicionar ou remover camadas conforme necessário, o que ajuda a escalar a aplicação de maneira eficiente.


Estrutura do Projeto JavaFX

Aqui está a estrutura de diretórios do projeto JavaFX, organizada segundo a arquitetura em camadas:

src/
├── main/
│   ├── java/
│   │   ├── com/
│   │   │   └── exemplo/
│   │   │       ├── model/       # Camada Model
│   │   │       │   └── Tarefa.java
│   │   │       ├── dto/         # Camada DTO
│   │   │       │   └── TarefaDTO.java
│   │   │       ├── dao/         # Camada DAO
│   │   │       │   └── TarefaDAO.java
│   │   │       ├── service/     # Camada Service
│   │   │       │   └── TarefaService.java
│   │   │       ├── controller/  # Camada Controller
│   │   │       │   └── TarefaController.java # Classe Controller
│   │   │       └── Main.java    # Classe principal
│   └── resources/
│       ├── fxml/                # Arquivos FXML
│       │   └── tarefa_view.fxml
│       ├── images/              # Pasta para imagens
│       └── styles/              # Pasta para estilos CSS
└── test/ 

 

Camada Model

A camada Model é responsável por representar os dados da aplicação. Nesta camada, definimos as classes que representam as entidades do nosso sistema.

package com.exemplo.model;

public class Tarefa {
    private String nome;

    public Tarefa(String nome) {
        this.nome = nome;
    }

    public String getNome() {
        return nome;
    }
}



Camada DTO

A camada DTO (Data Transfer Object) é utilizada para transferir dados entre as camadas. Os DTOs são simples e contêm apenas atributos sem lógica de negócio.

package com.exemplo.dto;

public class TarefaDTO {
    private String nome;

    public TarefaDTO(String nome) {
        this.nome = nome;
    }

    public String getNome() {
        return nome;
    }
}

 

Camada DAO

A camada DAO (Data Access Object) é responsável pela interação com o banco de dados ou qualquer fonte de dados. Neste exemplo, simularemos o armazenamento de tarefas em uma lista.

package com.exemplo.dto;

public class TarefaDTO {
    private String nome;

    public TarefaDTO(String nome) {
        this.nome = nome;
    }

    public String getNome() {
        return nome;
    }
}

 

Camada Service

A camada Service contém a lógica de negócio da aplicação. É responsável por gerenciar as interações entre a camada DAO e o controlador.

package com.exemplo.service;

import com.exemplo.dao.TarefaDAO;
import com.exemplo.dto.TarefaDTO;
import com.exemplo.model.Tarefa;
import java.util.List;

public class TarefaService {
    private TarefaDAO tarefaDAO = new TarefaDAO();

    public void salvarTarefa(TarefaDTO tarefaDTO) {
        Tarefa tarefa = new Tarefa(tarefaDTO.getNome());
        tarefaDAO.salvar(tarefa);
    }

    public List obterTarefas() {
        return tarefaDAO.listar();
    }
}



Camada Controller

A camada Controller é responsável pela interação entre a interface do usuário e a lógica do aplicativo. Aqui, manipulamos eventos e atualizamos a interface com base nas ações do usuário.

package com.exemplo.controller;

import com.exemplo.dto.TarefaDTO;
import com.exemplo.model.Tarefa;
import com.exemplo.service.TarefaService;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.VBox;

import java.util.List;

public class TarefaController {
    @FXML
    private TextField tarefaField; // Campo de texto para entrada de tarefa

    @FXML
    private Button adicionarButton; // Botão para adicionar tarefa

    @FXML
    private VBox tarefasContainer; // Container para exibir as tarefas

    private TarefaService tarefaService = new TarefaService();

    @FXML
    public void initialize() {
        adicionarButton.setOnAction(event -> adicionarTarefa());
        listarTarefas();
    }

    public void adicionarTarefa() {
        String nome = tarefaField.getText();
        if (!nome.isEmpty()) {
            TarefaDTO tarefaDTO = new TarefaDTO(nome);
            tarefaService.salvarTarefa(tarefaDTO);
            tarefaField.clear();
            listarTarefas();
        }
    }

    public void listarTarefas() {
        tarefasContainer.getChildren().clear(); // Limpa o container
        List tarefas = tarefaService.obterTarefas();
        for (Tarefa tarefa : tarefas) {
            Label tarefaLabel = new Label(tarefa.getNome());
            tarefasContainer.getChildren().add(tarefaLabel); // Adiciona cada tarefa ao container
        }
    }
}

 

Exemplo Prático de Implementação Classe Main

Vamos implementar a classe principal que inicia a aplicação e carrega a interface do usuário.

package com.exemplo;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class Main extends Application {
    @Override
    public void start(Stage primaryStage) throws Exception {
        primaryStage.setTitle("Gerenciador de Tarefas");
        Parent root = FXMLLoader.load(getClass().getResource("/fxml/tarefa_view.fxml")); // Carrega o FXML
        Scene scene = new Scene(root, 400, 300);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}



Conclusão

A arquitetura em camadas é uma abordagem eficiente para a construção de aplicações JavaFX, promovendo a separação de preocupações e facilitando a manutenção do código. Neste artigo, exploramos as camadas Model, DTO, DAO, Service e Controller, além de fornecer um exemplo prático de implementação. Com essa estrutura, você pode desenvolver aplicações mais organizadas e escaláveis, tornando-se um desenvolvedor JavaFX mais eficaz.

 

Veja Mais

Compartilhar Artigo:

Clayton Andrade

Redator & Professor

Formado em Ciência da Computação pela Universidade do Extremo Sul Catarinense (UNESC) e pós-graduado em Computação Forense e Perícia Digital pela Faculdade de Tecnologia Avançada (FTA). Atuo como professor universitário e técnico no SENAI, além de professor técnico no CEDUP. Tenho experiência como analista de sistemas e líder técnico em tecnologias backend, incluindo Java, Android e Spring Boot. Meu objetivo é descomplicar o mundo da programação, oferecendo dicas práticas e insights valiosos. Cada artigo que escrevo é pensado para ajudar você a dominar a tecnologia de forma acessível, objetiva e no seu próprio ritmo.

Leave a Reply

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

Clayton Andrade

Clayton Andrade

Redator & Professor

Formado em Ciência da Computação pela Universidade do Extremo Sul Catarinense (UNESC) e pós-graduado em Computação Forense e Perícia Digital pela Faculdade de Tecnologia Avançada (FTA). Atuo como professor universitário e técnico no SENAI, além de professor técnico no CEDUP. Tenho experiência como analista de sistemas e líder técnico em tecnologias backend, incluindo Java, Android e Spring Boot. Meu objetivo é descomplicar o mundo da programação, oferecendo dicas práticas e insights valiosos. Cada artigo que escrevo é pensado para ajudar você a dominar a tecnologia de forma acessível, objetiva e no seu próprio ritmo.

Follow On Instagram

Posts Recentes

  • All Post
  • Arquitetura de Software
  • JavaFX
  • Linguagem Java
  • Programação Orientada a Objetos

Dream Life in Paris

Questions explained agreeable preferred strangers too him her son. Set put shyness offices his females him distant.

Join the family!

Sign up for a Newsletter.

You have been successfully Subscribed! Ops! Something went wrong, please try again.
Edit Template

Sobre

Bem-vindo ao blog Professor Clayton Andrade! Nossa dedicação é compartilhar conhecimento prático e atualizado sobre desenvolvimento de software. Aqui, você encontrará tutoriais detalhados, dicas e artigos sobre linguagens de programação, frameworks, ferramentas e boas práticas de desenvolvimento. Nosso objetivo é ajudar desenvolvedores de todos os níveis, desde iniciantes até profissionais experientes, a aprimorar suas habilidades e acompanhar as tendências mais recentes do mundo da programação.

Post Recentes

  • All Post
  • Arquitetura de Software
  • JavaFX
  • Linguagem Java
  • Programação Orientada a Objetos

© 2024 Criado por Click4Ads