GithubHelp home page GithubHelp logo

auto_service_stream's Introduction

Simulação de Concessionária com Sockets

Este projeto simula um sistema de concessionárias que recebem veículos de uma fábrica externa e os vendem para clientes. A comunicação com a fábrica é realizada via sockets, e o estoque da concessionária é gerenciado por um buffer circular, representando a esteira de veículos.

Requisitos

  • Java Development Kit (JDK) 16 ou superior

Como executar o projeto

Clone o repositório:

git clone https://github.com/allanrodigo/auto_service_stream.git

Compile o código:

javac *.java

Execute a simulação (assumindo que a fábrica está rodando em outro computador):

java Main

Arquitetura do Sistema

O sistema é composto por três componentes principais:

Fábrica (Externa)

  • Executa em outro computador e escuta conexões de sockets.
  • Envia dados de veículos (tipo, cor, IDs) em formato JSON para as concessionárias.

Concessionárias

  • Implementadas como classes Dealership que herdam de uma classe base abstrata.
  • Cada concessionária possui:
    • Um nome (name).
    • Um Client para conectar com a fábrica.
    • Um Buffer (circular) para armazenar veículos.
    • Métodos add_vehicle() para receber veículos da fábrica e sell_vehicle() para vender aos clientes.

Clientes

  • Implementados como threads (Customer).
  • Cada cliente:
    • Tenta comprar um veículo aleatoriamente de uma das concessionárias.
    • Se a concessionária não tiver veículos, o cliente entra em espera.

Classes Principais

  • Client: Estabelece a conexão com a fábrica via socket e recebe os dados dos veículos.
  • Dealership: Classe base abstrata para as concessionárias. Gerencia o estoque de veículos e a comunicação com a fábrica.
  • MercedesDealership, PorscheDealership, BmwDealership: Classes concretas que implementam as concessionárias de cada marca.
  • Customer: Representa um cliente que tenta comprar um veículo.
  • Buffer: Implementa um buffer circular para armazenar os veículos na esteira.
  • Vehicle: Representa um veículo com seus atributos (tipo, cor, IDs).
  • Main: Inicializa a simulação e cria as concessionárias e os clientes.

Funcionamento da Simulação

A classe Main cria as concessionárias e os clientes. Cada concessionária inicia uma thread que se conecta à fábrica e recebe veículos continuamente, adicionando-os ao seu buffer. Cada cliente inicia uma thread que tenta comprar um veículo aleatoriamente de uma concessionária. Se a concessionária tiver veículos disponíveis, o cliente compra um e a concessionária remove o veículo do buffer. Se a concessionária não tiver veículos, o cliente entra em espera até que um veículo esteja disponível.

Logs

O sistema registra eventos importantes, como a chegada de veículos nas concessionárias e a venda de veículos aos clientes, em um arquivo de log (dealership_logs.txt).

Considerações

Este projeto demonstra a aplicação de conceitos de programação concorrente em Java, como threads, semáforos e sockets. A simulação assume que a fábrica está rodando em outro computador e enviando dados de veículos via socket. O projeto pode ser expandido para incluir mais funcionalidades, como diferentes tipos de veículos, estatísticas da simulação e interface gráfica.

Autor

Allan Amantino

auto_service_stream's People

Contributors

allanrodigo avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.