Plain old CLR object

Für sich stehende Datenmenge
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 16. März 2021 um 13:07 Uhr durch M2k~dewiki (Diskussion | Beiträge) (HC: Ergänze Kategorie:Objektorientierte Programmierung). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Ein Plain Old CLR Object (zu Deutsch: einfaches altes CLR Objekt) oder ein Plain Old Class Object (zu Deutsch: einfaches altes Klassen-Objekt) - kurz: POCO- ist in der Softwareentwicklung ein einfaches Objekt, das in der .NET Common Language Runtime (CLR) erstellt wurde und nicht durch Vererbung oder Attribute belastet ist. Dies wird häufig im Gegensatz zu den komplexen oder spezialisierten Objekten verwendet, die objektrelationale Abbildungs-Frameworks häufig benötigen[1]. Im Wesentlichen ist ein POCO nicht von einem externen Framework abhängig.

Etymologie

Plain Old CLR Object[2] ist ein Kunstbegriff, welches von plain old Java object aus der Java EE Programmier-Welt abgeleitet und durch Martin Fowler in 2000 geprägt wurde. POCO wird häufig in Verbindung mit C# Objekte verwendet, obwohl POCO Klassen/Objekte auch mit anderen Programmiersprachen erstellt werden können. Ein anderes alternatives Akronym dafür ist Plain Old .NET Object.

Vorteile

Einige Vorteile von POCOs sind:

  • ermöglicht einen einfachen Speichermechanismus für Daten und vereinfacht die Serialisierung und das Weiterleiten von Daten durch Schichten
  • geht Hand in Hand mit Dependency Injection und die Repository Entwurfsmuster (OOP)
  • Minimierte Komplexität und Abhängigkeiten von anderen Schichten (höhere Schichten kümmern sich nur um die POCOs, POCOs kümmern sich Nichts), was eine lose Kopplung erleichtert
  • erhöht die Testbarkeit durch Vereinfachung

Beispiel

// Diese Klasse ist keine POCO Klasse!
public class Person : IDisposable
{
    private static readonly ILogger Logger = LoggerFactory.Create(typeof(Person));
    public Person() {}
    public Person(int id, string firstName, string lastName, DateTime birthDate)
    {
        Id = id;
        FirstName = firstName;
        LastName = lastName;
        BirthDate = birthDate;
    }
    
    [Category("Data")]
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public DateTime BirthDate { get; set; }

    public string GetName()
    {
        return $"{FirstName} {LastName}";
    }

    public override string ToString() 
        => $"Id:{Id}, FirstName:{FirstName}, LastName:{LastName}, BirthDate:{BirthDate}";
        
    public void Dispose() {/* Code...*/}
}

// Diese Klasse ist eine POCO Klasse.
public class Person
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public DateTime BirthDate { get; set; }
}

Siehe auch

Einzelnachweise

  1. HongGit: POCO-Unterstützung - WCF. Abgerufen am 16. März 2021 (deutsch).
  2. HongGit: POCO-Unterstützung - WCF. Abgerufen am 16. März 2021 (deutsch).