Els paquets fills en Ada són una característica poderosa que permet l'organització jeràrquica del codi. Aquesta estructura facilita la modularitat i la reutilització del codi, permetent que els desenvolupadors divideixin grans sistemes en components més petits i manejables.
Conceptes Clau
- 
Paquet Pare i Paquet Fill:
- Un paquet fill és un paquet que es defineix com a part d'un altre paquet, anomenat paquet pare.
 - Els paquets fills poden accedir als elements visibles del paquet pare.
 
 - 
Visibilitat:
- Els paquets fills tenen accés a les entitats visibles del paquet pare, però no a les entitats privades.
 - Els paquets fills poden declarar les seves pròpies entitats visibles i privades.
 
 - 
Organització Jeràrquica:
- Els paquets fills permeten una organització jeràrquica del codi, facilitant la gestió de projectes grans.
 
 
Estructura d'un Paquet Fill
Definició del Paquet Pare
package Parent_Package is
    -- Declaracions visibles
    procedure Parent_Procedure;
private
    -- Declaracions privades
    X : Integer := 0;
end Parent_Package;Definició del Paquet Fill
package Parent_Package.Child_Package is
    -- Declaracions visibles del paquet fill
    procedure Child_Procedure;
end Parent_Package.Child_Package;Implementació del Paquet Pare
package body Parent_Package is
    procedure Parent_Procedure is
    begin
        -- Implementació de Parent_Procedure
    end Parent_Procedure;
end Parent_Package;Implementació del Paquet Fill
package body Parent_Package.Child_Package is
    procedure Child_Procedure is
    begin
        -- Implementació de Child_Procedure
        -- Pot accedir a Parent_Procedure però no a X
        Parent_Procedure;
    end Child_Procedure;
end Parent_Package.Child_Package;Exemple Pràctic
Paquet Pare: Library
package Library is
    procedure Add_Book (Title : String);
    procedure Remove_Book (Title : String);
private
    type Book is record
        Title : String (1 .. 100);
        Author : String (1 .. 100);
    end record;
    Books : array (1 .. 100) of Book;
    Book_Count : Integer := 0;
end Library;Paquet Fill: Library.Catalog
Implementació del Paquet Pare
package body Library is
    procedure Add_Book (Title : String) is
    begin
        if Book_Count < 100 then
            Book_Count := Book_Count + 1;
            Books(Book_Count).Title := Title;
        end if;
    end Add_Book;
    procedure Remove_Book (Title : String) is
    begin
        -- Implementació per eliminar un llibre
    end Remove_Book;
end Library;Implementació del Paquet Fill
package body Library.Catalog is
    procedure List_Books is
    begin
        for I in 1 .. Book_Count loop
            Ada.Text_IO.Put_Line(Books(I).Title);
        end loop;
    end List_Books;
end Library.Catalog;Exercicis Pràctics
Exercici 1: Crear un Paquet Fill
- Objectiu: Crear un paquet fill que afegeixi funcionalitat a un paquet pare existent.
 - Descripció:
- Defineix un paquet pare 
Math_Operationsamb una funcióAdd. - Defineix un paquet fill 
Math_Operations.Advancedamb una funcióMultiply. 
 - Defineix un paquet pare 
 
Solució
Paquet Pare: Math_Operations
Implementació del Paquet Pare
package body Math_Operations is
    function Add (A, B : Integer) return Integer is
    begin
        return A + B;
    end Add;
end Math_Operations;Paquet Fill: Math_Operations.Advanced
package Math_Operations.Advanced is
    function Multiply (A, B : Integer) return Integer;
end Math_Operations.Advanced;Implementació del Paquet Fill
package body Math_Operations.Advanced is
    function Multiply (A, B : Integer) return Integer is
    begin
        return A * B;
    end Multiply;
end Math_Operations.Advanced;Exercici 2: Utilitzar Paquets Fills
- Objectiu: Utilitzar un paquet fill en un programa principal.
 - Descripció:
- Utilitza el paquet 
Math_Operationsi el seu paquet fillMath_Operations.Advancedper realitzar operacions matemàtiques en un programa principal. 
 - Utilitza el paquet 
 
Solució
Programa Principal
with Ada.Text_IO; use Ada.Text_IO;
with Math_Operations;
with Math_Operations.Advanced;
procedure Main is
    A, B : Integer := 5;
    Sum, Product : Integer;
begin
    Sum := Math_Operations.Add(A, B);
    Product := Math_Operations.Advanced.Multiply(A, B);
    Put_Line("Sum: " & Integer'Image(Sum));
    Put_Line("Product: " & Integer'Image(Product));
end Main;Conclusió
Els paquets fills en Ada permeten una organització jeràrquica i modular del codi, facilitant la gestió de projectes grans i complexos. Amb la pràctica, els programadors poden utilitzar aquesta característica per crear sistemes més estructurats i mantenibles.
Curs de Programació en Ada
Mòdul 1: Introducció a Ada
Mòdul 2: Conceptes Bàsics
- Variables i Tipus de Dades
 - Operadors i Expressions
 - Estructures de Control
 - Bucles en Ada
 - Subprogrames: Procediments i Funcions
 
Mòdul 3: Tipus de Dades Avançats
Mòdul 4: Programació Modular
Mòdul 5: Concurrència i Programació en Temps Real
Mòdul 6: Temes Avançats
Mòdul 7: Millors Pràctiques i Optimització
- Estil de Codi i Millors Pràctiques
 - Depuració i Proves
 - Optimització del Rendiment
 - Consideracions de Seguretat
 
