Skip to content
Snippets Groups Projects
Commit 6e1975f9 authored by BEAUMONT Gwendal's avatar BEAUMONT Gwendal
Browse files

initial commit

parents
No related branches found
No related tags found
No related merge requests found
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
</classpath>
# Created by https://www.toptal.com/developers/gitignore/api/visualstudiocode,java
# Edit at https://www.toptal.com/developers/gitignore?templates=visualstudiocode,java
### Java ###
# Compiled class file
*.class
# Log file
*.log
# BlueJ files
*.ctxt
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
replay_pid*
### VisualStudioCode ###
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
!.vscode/*.code-snippets
# Local History for Visual Studio Code
.history/
# Built Visual Studio Code Extensions
*.vsix
### VisualStudioCode Patch ###
# Ignore all local history of files
.history
.ionide
# End of https://www.toptal.com/developers/gitignore/api/visualstudiocode,java
\ No newline at end of file
.project 0 → 100644
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>train</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
<filteredResources>
<filter>
<id>1705657419652</id>
<name></name>
<type>30</type>
<matcher>
<id>org.eclipse.core.resources.regexFilterMatcher</id>
<arguments>node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__</arguments>
</matcher>
</filter>
</filteredResources>
</projectDescription>
# TP Train (TP 11 - 15)
_Groupe composé de XXX xxx, YYY yyy._
## Introduction
Ce projet s'inscrit dans le cadre du cours sur les logiciels concurrents. Il consiste en la modélisation en Java du déplacement de trains sur des rails.
- Éditeur utilisé : `XXX (au choix)`
## Réponses aux questions
### Question 1.1
Réponse
### Question 1.2
Réponse
### Question 1.3
etc...
\ No newline at end of file
package train;
public class BadPositionForTrainException extends Exception {
private static final long serialVersionUID = 1L;
public BadPositionForTrainException(String name){
super(name);
}
public String getMessage(){
return super.getMessage();
}
}
package train;
/**
* Représentation de la direction que peut prendre un train : de gauche à droite
* ou de droite à gauche.
*
* @author Fabien Dagnat <fabien.dagnat@imt-atlantique.fr>
* @author Philippe Tanguy <philippe.tanguy@imt-atlantique.fr>
*/
public enum Direction {
LR {
@Override
public String toString() {
return "from left to right";
}
},
RL {
@Override
public String toString() {
return "from right to left";
}
};
}
package train;
/**
* Cette classe abstraite est la représentation générique d'un élément de base d'un
* circuit, elle factorise les fonctionnalités communes des deux sous-classes :
* l'entrée d'un train, sa sortie et l'appartenance au circuit.<br/>
* Les deux sous-classes sont :
* <ol>
* <li>La représentation d'une gare : classe {@link Station}</li>
* <li>La représentation d'une section de voie ferrée : classe {@link Section}</li>
* </ol>
*
* @author Fabien Dagnat <fabien.dagnat@imt-atlantique.fr>
* @author Philippe Tanguy <philippe.tanguy@imt-atlantique.fr>
*/
public abstract class Element {
private final String name;
protected Railway railway;
protected Element(String name) {
if(name == null)
throw new NullPointerException();
this.name = name;
}
public void setRailway(Railway r) {
if(r == null)
throw new NullPointerException();
this.railway = r;
}
@Override
public String toString() {
return this.name;
}
}
package train;
/**
* @author Fabien Dagnat <fabien.dagnat@imt-atlantique.fr>
*/
public class Main {
public static void main(String[] args) {
Station A = new Station("GareA", 3);
Station D = new Station("GareD", 3);
Section AB = new Section("AB");
Section BC = new Section("BC");
Section CD = new Section("CD");
Railway r = new Railway(new Element[] { A, AB, BC, CD, D });
System.out.println("The railway is:");
System.out.println("\t" + r);
Position p = new Position(A, Direction.LR);
try {
Train t1 = new Train("1", p);
Train t2 = new Train("2", p);
Train t3 = new Train("3", p);
System.out.println(t1);
System.out.println(t2);
System.out.println(t3);
} catch (BadPositionForTrainException e) {
System.out.println("Le train " + e.getMessage());
}
}
}
package train;
/**
* Représentation de la position d'un train dans le circuit. Une position
* est caractérisée par deux valeurs :
* <ol>
* <li>
* L'élément où se positionne le train : une gare (classe {@link Station})
* ou une section de voie ferrée (classe {@link Section}).
* </li>
* <li>
* La direction qu'il prend (enumération {@link Direction}) : de gauche à
* droite ou de droite à gauche.
* </li>
* </ol>
* @author Fabien Dagnat <fabien.dagnat@imt-atlantique.fr> Modifié par Mayte
* Segarra
* @author Philippe Tanguy <philippe.tanguy@imt-atlantique.fr>
*
* @version 0.3
*/
public class Position implements Cloneable {
private final Direction direction;
private final Element pos;
public Position(Element elt, Direction d) {
if (elt == null || d == null)
throw new NullPointerException();
this.pos = elt;
this.direction = d;
}
@Override
public Position clone() {
try {
return (Position) super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
return null;
}
}
public Element getPos() {
return pos;
}
@Override
public String toString() {
StringBuilder result = new StringBuilder(this.pos.toString());
result.append(" going ");
result.append(this.direction);
return result.toString();
}
}
package train;
/**
* Représentation d'un circuit constitué d'éléments de voie ferrée : gare ou
* section de voie
*
* @author Fabien Dagnat <fabien.dagnat@imt-atlantique.fr>
* @author Philippe Tanguy <philippe.tanguy@imt-atlantique.fr>
*/
public class Railway {
private final Element[] elements;
public Railway(Element[] elements) {
if(elements == null)
throw new NullPointerException();
this.elements = elements;
for (Element e : elements)
e.setRailway(this);
}
@Override
public String toString() {
StringBuilder result = new StringBuilder();
boolean first = true;
for (Element e : this.elements) {
if (first)
first = false;
else
result.append("--");
result.append(e);
}
return result.toString();
}
}
package train;
/**
* Représentation d'une section de voie ferrée. C'est une sous-classe de la
* classe {@link Element}.
*
* @author Fabien Dagnat <fabien.dagnat@imt-atlantique.fr>
* @author Philippe Tanguy <philippe.tanguy@imt-atlantique.fr>
*/
public class Section extends Element {
public Section(String name) {
super(name);
}
}
package train;
/**
* Représentation d'une gare. C'est une sous-classe de la classe {@link Element}.
* Une gare est caractérisée par un nom et un nombre de quais (donc de trains
* qu'elle est susceptible d'accueillir à un instant donné).
*
* @author Fabien Dagnat <fabien.dagnat@imt-atlantique.fr>
* @author Philippe Tanguy <philippe.tanguy@imt-atlantique.fr>
*/
public class Station extends Element {
private final int size;
public Station(String name, int size) {
super(name);
if(name == null || size <=0)
throw new NullPointerException();
this.size = size;
}
}
package train;
/**
* Représentation d'un train. Un train est caractérisé par deux valeurs :
* <ol>
* <li>
* Son nom pour l'affichage.
* </li>
* <li>
* La position qu'il occupe dans le circuit (un élément avec une direction) : classe {@link Position}.
* </li>
* </ol>
*
* @author Fabien Dagnat <fabien.dagnat@imt-atlantique.fr>
* @author Mayte segarra <mt.segarra@imt-atlantique.fr>
* Test if the first element of a train is a station
* @author Philippe Tanguy <philippe.tanguy@imt-atlantique.fr>
* @version 0.3
*/
public class Train {
private final String name;
private final Position pos;
public Train(String name, Position p) throws BadPositionForTrainException {
if (name == null || p == null)
throw new NullPointerException();
// A train should be first be in a station
if (!(p.getPos() instanceof Station))
throw new BadPositionForTrainException(name);
this.name = name;
this.pos = p.clone();
}
@Override
public String toString() {
StringBuilder result = new StringBuilder("Train[");
result.append(this.name);
result.append("]");
result.append(" is on ");
result.append(this.pos);
return result.toString();
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment