4. Neúplné typy

Neúplné typy umožňují programátorovi rozdělit implementaci do několika samostatných souborů. Přesněji platí pro zdrojový kód jedné třídy, struktury a rozhraní. Neúplné typy jsou deklarovány pomocí typového modifikátoru partial a musí být umístěny ve stejném jmenném prostoru jako ostatní rozdělené části.

Výhody využití neúplných typů:

  • několik vývojářů může ve stejnou chvíli pracovat nad zdrojovým kódem jednoho datového typu, který musí být stejný a je rozdělen do individuálních souborů.

  • uživatelský kód může být oddělený od generovaného kódu, což zabraňuje nástrojům přepsat uživatelské změny. Tato vlastnost je využita u automaticky generovaného kódu WinForms a u silně typových DataSetů.

  • možnost rozdělení větších implementací

  • možné ulehčení údržby a řízení změn ve zdrojovém kódu

  • umožňuje psaní kódu code-beside narozdíl od code-behind, což je využito u tvorby webových aplikací v ASP.NET 2.0

Při využití těchto technologií dochází k částečnému generování kódu, který je následně doplněn specifickým kódem, který dodává programátor. Aby nedocházelo ke kolizi mezi zapsaným kódem a automaticky vygenerovaným kódem je definice tříd, struktur nebo rozhraní rozdělena do individuálních souborů. Individuální soubory poté spojují jeden samostatný typ.

  • Využitím neúplných typů nijak neovlivníme spustitelný kód.

  • Soubory, které definují jeden typ jsou spojeny až při přeložení a nelze je později jakýmkoliv způsobem rozšířit nebo modifikovat.

  • Neúplné typy nepovolují stejné deklarace proměnných v různých částech.

  • Modifikátor partial není povolen pro deklarace delegátů a objektů typu enum.

4.1. Rozdělení neúplných typů podle kódu

  • Komulativní - takový kód, kde jsou části ze všech souborů spojeny v jednu výslednou. Mohou to být například metody, položky a rozhraní.

  • Nekomulativní - kód musí být ve všech souborech stejný. Jako například jednotlivé typy, viditelnost, či definice základní třídy konkrétního datového typu.

Pracujeme-li s neúplnými typy například v prostředí Visual Studio 2005, pak Class View nebo různé navigační lišty, vždy zobrazují typ jako celek, a to nezávisle na tom, do kolika souborů je rozdělen.

4.1.1. Neúplné typy v příkladech

Následující příklad prezentuje ukázku na založení a praktické využití neúplných typů, kdy je neúplná třída implementována do dvou částí. Tyto dvě části mohou být v různých zdrojových souborech. Například první část může být strojem generovaná databáze představující nástroj a druhá část je ručně napsaná uživatelem, jak tomu je u třídy Customer:

[ukázka kódu]
public partial class Customer
{
    private int id;
    private string name;
    private string address;
    private List<Order> orders;
    public Customer() {
        ...
    }
}

public partial class Customer
{
    public void SubmitOrder(Order order) {
        orders.Add(order);
    }
    public bool HasOutstandingOrders() {
        return orders.Count > 0;
    }
}
                    

Zde vidíme rozložení třídy Customer na dvě části, kde v první části jsou definovány vlastnosti a konstruktor neúplné třídy. Druhá část zahrnuje pouze uživatelem ručně psané metody.