Package pigeons

# Class Park

java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.JPanel
pigeons.Park

All Implemented Interfaces:
  `java.awt.event.MouseListener`, `java.awt.image.ImageObserver`, `java.awt.MenuContainer`, `java.io.Serializable`, `java.util.EventListener`, `javax.accessibility.Accessible`

    public class Park
    extends javax.swing.JPanel
    implements java.awt.event.MouseListener

Classe permettant de gÃ©rer un parc d'oiseaux Ce parc permet de gerer un parc contenant des oiseaux, vous pouvez nourrir ces oiseaux en cliquant sur votre interface, vos oiseaux seront effrayer de maniÃ¨re alÃ©atoire. Ce park peut etre affichÃ© Ã l'aide d'une `JFrame`.

Since:
  1.0
See Also:
  Serialized Form

## Nested Class Summary

## Nested classes/interfaces inherited from class javax.swing.JPanel

`javax.swing.JPanel.AccessibleJPanel`

## Nested classes/interfaces inherited from class javax.swing.JComponent

`javax.swing.JComponent.AccessibleJComponent`

## Nested classes/interfaces inherited from class java.awt.Container

`java.awt.Container.AccessibleAWTContainer`

## Nested classes/interfaces inherited from class java.awt.Component

`java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy`

## Field Summary

Fields
Modifier and Type | Field | Description
--- | --- | ---
`private java.util.ArrayList<Bird>` | `birds` | Oiseaux prÃ©sent dans le parc
`private java.util.ArrayList<Food>` | `foods` | Nourritures prÃ©sente dans le parc
`private int` | `frightenProbaility` | ProbabilitÃ© d'effrayer les oiseaux, decroit Ã chaque actualisation du parc
`private java.util.concurrent.atomic.AtomicInteger` | `numWriter` | Nombre de thread travaillant en ecriture sur l'objet

### Fields inherited from class javax.swing.JComponent

`listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW`

### Fields inherited from class java.awt.Component

`accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT`

### Fields inherited from interface java.awt.image.ImageObserver

`ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH`

## Constructor Summary

Constructors
Constructor | Description
--- | ---
`Park​(int width, int height)` | Constructeur de l'objet representant un parc

## Method Summary

Modifier and Type | Method | Description
--- | --- | ---
`void` | `addBird​(Bird toAdd)` | Ajouter un oiseau dans le parc
`void` | `addFood​(Food toAdd)` | Ajouter une nourriture dans le parc Cette mÃ©thode est executÃ© avec un verrou ce qui permet de modifier la propriÃ©tÃ©, tout en bloquant les lectures eventuelles de la propriÃ©tÃ©.
`java.util.ArrayList<Bird>` | `getBirds()` | Obtenir les oiseaux du parc
`java.util.ArrayList<Food>` | `getFoods()` | Obtenir la nourriture du parc Cette mÃ©thode est executÃ© avec un verrou ce qui permet aux oiseaux de recuperer la propriÃ©tÃ© en Ã©tant sur que la variable n'est pas en cours de modification
`void` | `mouseClicked​(java.awt.event.MouseEvent e)` |
`void` | `mouseEntered​(java.awt.event.MouseEvent e)` |
`void` | `mouseExited​(java.awt.event.MouseEvent e)` |
`void` | `mousePressed​(java.awt.event.MouseEvent e)` |
`void` | `mouseReleased​(java.awt.event.MouseEvent e)` |
`void` | `paintComponent​(java.awt.Graphics g)` |
`private void` | `refreshPark()` | Rafraichir le parc, supprime les nourriture pÃ©rimÃ©s depuis un certain temps, rÃ©duit le temps de fraicheurs des nourritures et essaye d'effrayer les oiseaux du park
`void` | `removeBird​(int index)` |
`void` | `removeFood​(Food food)` | Supprimer une nourriture du parc Cette mÃ©thode est executÃ© avec un verrou ce qui permet de modifier la propriÃ©tÃ©, tout en bloquant les lectures eventuelles de la propriÃ©tÃ©.
`void` | `removeFoods​(java.util.ArrayList<Food> foods)` | Supprimer des nourriture prÃ©sente sur le parc Cette mÃ©thode est executÃ© avec un verrou ce qui permet de modifier la propriÃ©tÃ©, tout en bloquant les lectures eventuelles de la propriÃ©tÃ©.

### Methods inherited from class javax.swing.JPanel

`getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI`

### Methods inherited from class javax.swing.JComponent

`addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update`

### Methods inherited from class java.awt.Container

`add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusDownCycle, validate, validateTree`

### Methods inherited from class java.awt.Component

`action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

## Field Details

### birds

private java.util.ArrayList<Bird> birds
Oiseaux prÃ©sent dans le parc

### foods

private java.util.ArrayList<Food> foods
Nourritures prÃ©sente dans le parc

### frightenProbaility

private int frightenProbaility
ProbabilitÃ© d'effrayer les oiseaux, decroit Ã chaque actualisation du parc

### numWriter

private java.util.concurrent.atomic.AtomicInteger numWriter
Nombre de thread travaillant en ecriture sur l'objet

## Constructor Details

### Park

public Park​(int width, int height)
Constructeur de l'objet representant un parc

Parameters:
  `width` - longueur du parc
  `height` - hauteur du parc

## Method Details

### getBirds

public java.util.ArrayList<Bird> getBirds()
Obtenir les oiseaux du parc

Returns:
  la liste contenant les oiseaux du parcs

### getFoods

public java.util.ArrayList<Food> getFoods()
Obtenir la nourriture du parc Cette mÃ©thode est executÃ© avec un verrou ce qui permet aux oiseaux de recuperer la propriÃ©tÃ© en Ã©tant sur que la variable n'est pas en cours de modification

Returns:
  la liste contenant les nourritures du parc

### addFood

public void addFood​(Food toAdd)
Ajouter une nourriture dans le parc Cette mÃ©thode est executÃ© avec un verrou ce qui permet de modifier la propriÃ©tÃ©, tout en bloquant les lectures eventuelles de la propriÃ©tÃ©. L'ecriture est prioritaire sur la lecture.

Parameters:
  `toAdd` - nourriture a ajouter au parc

### addBird

public void addBird​(Bird toAdd)
Ajouter un oiseau dans le parc

Parameters:
  `toAdd` - Oiseau Ã ajouter au parc

### removeFoods

public void removeFoods​(java.util.ArrayList<Food> foods)
Supprimer des nourriture prÃ©sente sur le parc Cette mÃ©thode est executÃ© avec un verrou ce qui permet de modifier la propriÃ©tÃ©, tout en bloquant les lectures eventuelles de la propriÃ©tÃ©. L'ecriture est prioritaire sur la lecture.

Parameters:
  `foods` - liste de nourriture Ã supprimer du parc

### removeFood

public void removeFood​(Food food)
Supprimer une nourriture du parc Cette mÃ©thode est executÃ© avec un verrou ce qui permet de modifier la propriÃ©tÃ©, tout en bloquant les lectures eventuelles de la propriÃ©tÃ©. L'ecriture est prioritaire sur la lecture.

Parameters:
  `food` - nourriture Ã ajouter

### paintComponent

public void paintComponent​(java.awt.Graphics g)

Overrides:
  `paintComponent` in class `javax.swing.JComponent`

### mouseClicked

public void mouseClicked​(java.awt.event.MouseEvent e)

Specified by:
  `mouseClicked` in interface `java.awt.event.MouseListener`

### mousePressed

public void mousePressed​(java.awt.event.MouseEvent e)

Specified by:
  `mousePressed` in interface `java.awt.event.MouseListener`

### mouseReleased

public void mouseReleased​(java.awt.event.MouseEvent e)

Specified by:
  `mouseReleased` in interface `java.awt.event.MouseListener`

### mouseEntered

public void mouseEntered​(java.awt.event.MouseEvent e)

Specified by:
  `mouseEntered` in interface `java.awt.event.MouseListener`

### mouseExited

public void mouseExited​(java.awt.event.MouseEvent e)

Specified by:
  `mouseExited` in interface `java.awt.event.MouseListener`

### removeBird

public void removeBird​(int index)

Parameters:
  `index` - index de liste de l'oiseau Ã supprimer

### refreshPark

private void refreshPark()
Rafraichir le parc, supprime les nourriture pÃ©rimÃ©s depuis un certain temps, rÃ©duit le temps de fraicheurs des nourritures et essaye d'effrayer les oiseaux du park