Diagrame et US-D1 et US-D2

This commit is contained in:
Gaston_vm
2025-12-14 19:34:41 +01:00
parent 81411eb498
commit 88dcf18284
6 changed files with 264 additions and 1219 deletions
File diff suppressed because it is too large Load Diff
-173
View File
@@ -1,173 +0,0 @@
@startuml
skinparam packageStyle rectangle
skinparam classAttributeIconSize 0
' ============================
' PACKAGE mimage
' ============================
package mimage {
class Pixel {
- int r
- int g
- int b
+ Pixel(int r, int g, int b)
+ int getR()
+ int getG()
+ int getB()
+ void setR(int r)
+ void setG(int g)
+ void setB(int b)
}
class RGBImage {
- int width
- int height
- Pixel[][] pixels
+ RGBImage(int width, int height)
+ int getWidth()
+ int getHeight()
+ Pixel getPixel(int x, int y)
+ void setPixel(int x, int y, Pixel p)
}
}
' ============================
' PACKAGE mhuffman
' ============================
package mhuffman {
class FrequencyTable {
- int[] freqR
- int[] freqG
- int[] freqB
+ FrequencyTable()
+ void computeFromImage(RGBImage img)
+ int[] getRed()
+ int[] getGreen()
+ int[] getBlue()
}
class HuffmanNode {
+ int value
+ int frequency
+ HuffmanNode left
+ HuffmanNode right
+ boolean isLeaf()
}
class HuffmanTree {
- HuffmanNode root
+ HuffmanTree(FrequencyTable freq, char component)
+ Map<Integer,String> generateCodes()
}
class CanonicalCode {
- Map<Integer,Integer> codeLengths
- Map<Integer,String> canonicalCodes
+ CanonicalCode(Map<Integer,String> huffmanCodes)
+ String getCode(int value)
+ int getLength(int value)
}
FrequencyTable --> RGBImage
HuffmanTree --> HuffmanNode
CanonicalCode --> HuffmanTree
}
' ============================
' PACKAGE util
' ============================
package util {
class BitInputStream {
- InputStream in
- int currentByte
- int bitPosition
+ BitInputStream(InputStream in)
+ int readBit()
+ int readBits(int n)
+ void close()
}
class BitOutputStream {
- OutputStream out
- int currentByte
- int bitCount
+ BitOutputStream(OutputStream out)
+ void writeBit(int bit)
+ void writeBits(int value, int n)
+ void flush()
+ void close()
}
class ByteUtils {
+ static int toInt(byte high, byte low)
+ static byte[] toBytes(int value)
}
class FileUtils {
+ static boolean isPIFFile(File f)
+ static byte[] readBinaryFile(String path)
}
}
' ============================
' PACKAGE vconverter
' ============================
package vconverter {
class ConverterWindow {
+ void setImagePreview(RGBImage img)
+ void setFrequencyTable(int[] r, int[] g, int[] b)
+ void setHuffmanTable(Map<Integer,String> red,
Map<Integer,String> green,
Map<Integer,String> blue)
+ void setCanonicalTable(CanonicalCode r, CanonicalCode g, CanonicalCode b)
}
class PreviewPanel {
- RGBImage image
+ void setImage(RGBImage img)
}
class FrequencyTablePanel {
+ void updateFrequencies(int[] r, int[] g, int[] b)
}
class CodeTablePanel {
+ void updateCodes(Map<Integer,String> hR,
Map<Integer,String> hG,
Map<Integer,String> hB,
CanonicalCode cR,
CanonicalCode cG,
CanonicalCode cB)
}
ConverterWindow --> PreviewPanel
ConverterWindow --> FrequencyTablePanel
ConverterWindow --> CodeTablePanel
}
' ============================
' CONTROLLER (Sprint 1)
' ============================
class ConverterController {
+ void loadImage(String path)
+ void computeFrequencies()
+ void computeHuffman()
+ void computeCanonical()
+ void saveAsPIF(String path) 'encore vide pour Sprint 1
}
ConverterController --> RGBImage
ConverterController --> FrequencyTable
ConverterController --> HuffmanTree
ConverterController --> CanonicalCode
@enduml
+67
View File
@@ -0,0 +1,67 @@
@startuml
skinparam packageStyle rectangle
' ============================
' MODEL (bleu)
' ============================
package mimage {
class Pixel #aliceblue
class RGBImage #aliceblue
}
RGBImage *-- Pixel
package mhuffman {
class FrequencyTable #aliceblue
class HuffmanNode #aliceblue
class HuffmanTree #aliceblue
class CanonicalCode #aliceblue
}
HuffmanTree *-- HuffmanNode
FrequencyTable ..> RGBImage
CanonicalCode ..> HuffmanTree
package util {
class BitInputStream #aliceblue
class BitOutputStream #aliceblue
class ByteUtils #aliceblue
class FileUtils #aliceblue
}
package mpif {
class PIFWriter #aliceblue
}
PIFWriter ..> RGBImage
PIFWriter ..> CanonicalCode
PIFWriter ..> BitOutputStream
' ============================
' VIEW (vert)
' ============================
package vconverter {
class ConverterWindow #palegreen
class PreviewPanel #palegreen
class FrequencyTablePanel #palegreen
class CodeTablePanel #palegreen
}
ConverterWindow *-- PreviewPanel
ConverterWindow *-- FrequencyTablePanel
ConverterWindow *-- CodeTablePanel
' ============================
' CONTROLLER (orange)
' ============================
class ConverterController #ffddaa
ConverterController ..> RGBImage
ConverterController ..> FrequencyTable
ConverterController ..> HuffmanTree
ConverterController ..> CanonicalCode
ConverterController ..> PIFWriter
@enduml
Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

@@ -0,0 +1,197 @@
@startuml
skinparam packageStyle rectangle
' ============================
' PACKAGE mimage (MODEL - BLEU)
' ============================
package mimage {
class Pixel #aliceblue {
- r : int
- g : int
- b : int
+ Pixel(r, g, b)
+ getR()
+ getG()
+ getB()
+ setR(r)
+ setG(g)
+ setB(b)
}
class RGBImage #aliceblue {
- width : int
- height : int
- pixels : Pixel[*]
+ RGBImage(width, height)
+ getWidth()
+ getHeight()
+ getPixel(x, y)
+ setPixel(x, y, p)
}
}
RGBImage *-- Pixel : contient
' ============================
' PACKAGE mhuffman (MODEL - BLEU)
' ============================
package mhuffman {
class FrequencyTable #aliceblue {
- freqR : int[*]
- freqG : int[*]
- freqB : int[*]
+ computeFromImage(img)
+ getRed()
+ getGreen()
+ getBlue()
}
class HuffmanNode #aliceblue {
+ value : int
+ frequency : int
+ left : HuffmanNode
+ right : HuffmanNode
+ isLeaf()
}
class HuffmanTree #aliceblue {
- root : HuffmanNode
+ generateCodes()
}
class CanonicalCode #aliceblue {
- codeLengths : Map
- canonicalCodes : Map
+ getCode(value)
+ getLength(value)
}
}
FrequencyTable ..> RGBImage : analyse
HuffmanTree *-- HuffmanNode
CanonicalCode ..> HuffmanTree : dérive
' ============================
' PACKAGE util (MODEL - BLEU)
' ============================
package util {
class BitInputStream #aliceblue {
- in
- currentByte : int
- bitPosition : int
+ BitInputStream(in)
+ readBit()
+ readBits(n)
+ close()
}
class BitOutputStream #aliceblue {
- out
- currentByte : int
- bitCount : int
+ BitOutputStream(out)
+ writeBit(bit)
+ writeBits(value, n)
+ flush()
+ close()
}
class ByteUtils #aliceblue {
+ toInt(high, low)
+ toBytes(value)
}
class FileUtils #aliceblue {
+ isPIFFile(f)
+ readBinaryFile(path)
}
}
' ============================
' PACKAGE mpif (MODEL - BLEU) — Sprint 2
' ============================
package mpif {
class PIFWriter #aliceblue {
+ writeHeader(out, width, height)
+ writeTables(out, red, green, blue)
+ encodePixels(out, img, red, green, blue)
+ writeToFile(path, img, red, green, blue)
}
' (optionnel) PIFImage si tu souhaite la représenter
class PIFImage #aliceblue {
- width : int
- height : int
- lenR : int[*]
- lenG : int[*]
- lenB : int[*]
- pixelData
}
}
PIFWriter ..> RGBImage
PIFWriter ..> CanonicalCode
PIFWriter ..> BitOutputStream
' ============================
' PACKAGE vconverter (VIEW - VERT)
' ============================
package vconverter {
class ConverterWindow #palegreen {
+ setImagePreview(img)
+ setFrequencyTable()
+ setHuffmanTable()
+ setCanonicalTable()
}
class PreviewPanel #palegreen {
- image
+ setImage(img)
}
class FrequencyTablePanel #palegreen {
+ updateFrequencies()
}
class CodeTablePanel #palegreen {
+ updateCodes()
}
ConverterWindow *-- PreviewPanel
ConverterWindow *-- FrequencyTablePanel
ConverterWindow *-- CodeTablePanel
}
' ============================
' CONTROLLER (ORANGE)
' ============================
class ConverterController #ffddaa {
+ loadImage(path)
+ computeFrequencies()
+ computeHuffman()
+ computeCanonical()
+ saveAsPIF(path)
}
ConverterController ..> RGBImage
ConverterController ..> FrequencyTable
ConverterController ..> HuffmanTree
ConverterController ..> CanonicalCode
ConverterController ..> PIFWriter : écrit le .pif
@enduml
Binary file not shown.

After

Width:  |  Height:  |  Size: 174 KiB