217 lines
17 KiB
C#
217 lines
17 KiB
C#
using System.Collections.Generic;
|
||
using Project_Periodensystem.Model;
|
||
|
||
namespace Project_Periodensystem.Persistence
|
||
{
|
||
/// <summary>
|
||
/// Statische Datenquelle für alle chemischen Elemente des Periodensystems
|
||
///
|
||
/// ZWECK UND DATENMODELL:
|
||
/// - Eingebaute, unveränderliche Datenbasis für das Periodensystem
|
||
/// - Fallback-Datenquelle wenn externe JSON-Dateien nicht verfügbar sind
|
||
/// - Demonstration großer statischer Datenstrukturen in C#
|
||
/// - Vollständige wissenschaftliche Elementdaten für Bildungszwecke
|
||
///
|
||
/// DATENORGANISATION:
|
||
/// - 118 chemische Elemente (vollständiges Periodensystem bis 2023)
|
||
/// - Organisiert nach Perioden (Zeilen) für bessere Lesbarkeit
|
||
/// - Jedes Element mit 9 Eigenschaften (AtomicNumber bis Column)
|
||
/// - Wissenschaftlich korrekte Daten basierend auf IUPAC-Standards
|
||
///
|
||
/// C# KONZEPTE:
|
||
/// - Static Class: Globaler Zugriff ohne Instanziierung
|
||
/// - Static Property: Elements als unveränderliche Datenquelle
|
||
/// - Collection Initializer: new List<Element> { ... } Syntax
|
||
/// - Object Initializer: new Element(...) für jeden Eintrag
|
||
/// - Large Data Arrays: Umgang mit umfangreichen Datensätzen
|
||
///
|
||
/// DESIGN PATTERNS:
|
||
/// - Static Factory: Stellt vorgefertigte Element-Sammlung bereit
|
||
/// - Immutable Data: Nur Getter, keine Setter für Elements
|
||
/// - Reference Data: Unveränderliche Stammdaten
|
||
/// - Embedded Resource: Daten sind Teil der kompilierten Assembly
|
||
///
|
||
/// WISSENSCHAFTLICHE GENAUIGKEIT:
|
||
/// - Atomgewichte: Relative Atommassen basierend auf IUPAC 2021
|
||
/// - Elektronegativität: Pauling-Skala mit 2 Dezimalstellen
|
||
/// - Dichte: g/cm³ bei Standardbedingungen (20°C, 1 atm)
|
||
/// - Elementserien: Moderne Klassifikation nach chemischen Eigenschaften
|
||
/// - Positionen: Row/Column entsprechen Standard-Periodensystem-Layout
|
||
///
|
||
/// WARTUNG UND ERWEITERUNG:
|
||
/// - Neue Elemente können einfach zur Liste hinzugefügt werden
|
||
/// - Datenformat ist konsistent und selbst-dokumentierend
|
||
/// - Kommentare gruppieren Elemente nach Perioden für Übersichtlichkeit
|
||
/// - Jeder Eintrag folgt dem gleichen Schema für Konsistenz
|
||
/// </summary>
|
||
public static class PeriodicTableData
|
||
{
|
||
/// <summary>
|
||
/// Vollständige Liste aller bekannten chemischen Elemente
|
||
///
|
||
/// DATENSTRUKTUR:
|
||
/// - List<Element>: Dynamische Sammlung von Element-Objekten
|
||
/// - Static Property: Einmalige Initialisierung beim ersten Zugriff
|
||
/// - Read-Only: Nur Getter, keine externe Manipulation möglich
|
||
/// - Auto-Property: Compiler generiert backing field automatisch
|
||
///
|
||
/// INITIALISIERUNG:
|
||
/// - Collection Initializer: Elegante Syntax für große Datenmengen
|
||
/// - Compile-Time: Alle Daten werden zur Compile-Zeit in Assembly eingebettet
|
||
/// - Memory Efficient: Daten werden nur einmal geladen und geteilt
|
||
///
|
||
/// ZUGRIFF:
|
||
/// var elements = PeriodicTableData.Elements;
|
||
/// var hydrogen = elements.First(e => e.Symbol == "H");
|
||
/// </summary>
|
||
public static List<Element> Elements { get; } = new List<Element>
|
||
{
|
||
// ===== ERSTE PERIODE =====
|
||
// Die einfachsten Elemente: Wasserstoff und Helium
|
||
// Besonderheiten: Nur 1s-Orbitale gefüllt, einzigartige Eigenschaften
|
||
|
||
new Element( 1, "H", "Wasserstoff", 1.008, 2.20, 0.000, "Nichtmetall", 0, 0), // Leichtestes Element, Grundbaustein des Universums
|
||
new Element( 2, "He", "Helium", 4.003, 0.00, 0.001, "Edelgas", 0, 17), // Edelgas mit vollständiger Schale, chemisch inert
|
||
|
||
// ===== ZWEITE PERIODE =====
|
||
// Elemente mit 2 Elektronenschalen (1s² + 2s/2p)
|
||
// Wichtige biologische und technische Elemente
|
||
|
||
new Element( 3, "Li", "Lithium", 6.940, 0.98, 0.534, "Alkalimetall", 1, 0), // Leichtestes Metall, wichtig für Batterien
|
||
new Element( 4, "Be", "Beryllium", 9.012, 1.57, 1.850, "Erdalkalimetall", 1, 1), // Leicht aber giftig, Luft-/Raumfahrt
|
||
new Element( 5, "B", "Bor", 10.810,2.04, 2.340, "Halbmetall", 1, 12), // Grenze zwischen Metall/Nichtmetall
|
||
new Element( 6, "C", "Kohlenstoff", 12.011,2.55, 2.267, "Nichtmetall", 1, 13), // Basis allen Lebens, vielfältigste Chemie
|
||
new Element( 7, "N", "Stickstoff", 14.007,3.04, 0.001, "Nichtmetall", 1, 14), // 78% der Atmosphäre, wichtig für Proteine
|
||
new Element( 8, "O", "Sauerstoff", 15.999,3.44, 0.001, "Nichtmetall", 1, 15), // Lebenswichtig, 21% der Atmosphäre
|
||
new Element( 9, "F", "Fluor", 18.998,3.98, 0.002, "Halogen", 1, 16), // Höchste Elektronegativität, sehr reaktiv
|
||
new Element( 10, "Ne", "Neon", 20.180,0.00, 0.001, "Edelgas", 1, 17), // Leuchtreklame, chemisch inert
|
||
|
||
// ===== DRITTE PERIODE =====
|
||
// Erste Periode mit d-Orbital-Möglichkeiten
|
||
// Viele technisch wichtige Elemente (Aluminium, Silizium)
|
||
|
||
new Element( 11, "Na", "Natrium", 22.990,0.93, 0.971, "Alkalimetall", 2, 0), // Kochsalz, lebenswichtig für Nerven
|
||
new Element( 12, "Mg", "Magnesium", 24.305,1.31, 1.738, "Erdalkalimetall", 2, 1), // Chlorophyll-Zentrum, leichte Legierungen
|
||
new Element( 13, "Al", "Aluminium", 26.982,1.61, 2.698, "Post-Übergangsmetall",2, 12), // Häufigstes Metall der Erdkruste
|
||
new Element( 14, "Si", "Silizium", 28.085,1.90, 2.329, "Halbmetall", 2, 13), // Basis der Halbleiter-Technologie
|
||
new Element( 15, "P", "Phosphor", 30.974,2.19, 1.820, "Nichtmetall", 2, 14), // DNA/RNA, Energie-Übertragung (ATP)
|
||
new Element( 16, "S", "Schwefel", 32.060,2.58, 2.067, "Nichtmetall", 2, 15), // Proteine, Vulkanismus
|
||
new Element( 17, "Cl", "Chlor", 35.450,3.16, 0.003, "Halogen", 2, 16),
|
||
new Element( 18, "Ar", "Argon", 39.948,0.00, 0.002, "Edelgas", 2, 17),
|
||
|
||
// Vierte Periode
|
||
new Element( 19, "K", "Kalium", 39.098,0.82, 0.862, "Alkalimetall", 3, 0),
|
||
new Element( 20, "Ca", "Calcium", 40.078,1.00, 1.540, "Erdalkalimetall", 3, 1),
|
||
new Element( 21, "Sc", "Scandium", 44.956,1.36, 2.989, "Metall", 3, 2),
|
||
new Element( 22, "Ti", "Titan", 47.867,1.54, 4.540, "Metall", 3, 3),
|
||
new Element( 23, "V", "Vanadium", 50.942,1.63, 6.110, "Metall", 3, 4),
|
||
new Element( 24, "Cr", "Chrom", 51.996,1.66, 7.150, "Metall", 3, 5),
|
||
new Element( 25, "Mn", "Mangan", 54.938,1.55, 7.440, "Metall", 3, 6),
|
||
new Element( 26, "Fe", "Eisen", 55.845,1.83, 7.874, "Metall", 3, 7),
|
||
new Element( 27, "Co", "Cobalt", 58.933,1.88, 8.860, "Metall", 3, 8),
|
||
new Element( 28, "Ni", "Nickel", 58.693,1.91, 8.912, "Metall", 3, 9),
|
||
new Element( 29, "Cu", "Kupfer", 63.546,1.90, 8.960, "Metall", 3, 10),
|
||
new Element( 30, "Zn", "Zink", 65.380,1.65, 7.140, "Metall", 3, 11),
|
||
new Element( 31, "Ga", "Gallium", 69.723,1.81, 5.910, "Post-Übergangsmetall",3, 12),
|
||
new Element( 32, "Ge", "Germanium", 72.630,2.01, 5.323, "Halbmetall", 3, 13),
|
||
new Element( 33, "As", "Arsen", 74.922,2.18, 5.776, "Halbmetall", 3, 14),
|
||
new Element( 34, "Se", "Selen", 78.971,2.55, 4.809, "Nichtmetall", 3, 15),
|
||
new Element( 35, "Br", "Brom", 79.904,2.96, 3.122, "Halogen", 3, 16),
|
||
new Element( 36, "Kr", "Krypton", 83.798,3.00, 0.004, "Edelgas", 3, 17),
|
||
|
||
// Fünfte Periode
|
||
new Element( 37, "Rb", "Rubidium", 85.468,0.82, 1.532, "Alkalimetall", 4, 0),
|
||
new Element( 38, "Sr", "Strontium", 87.620,0.95, 2.640, "Erdalkalimetall", 4, 1),
|
||
new Element( 39, "Y", "Yttrium", 88.906,1.22, 4.472, "Metall", 4, 2),
|
||
new Element( 40, "Zr", "Zirconium", 91.224,1.33, 6.520, "Metall", 4, 3),
|
||
new Element( 41, "Nb", "Niob", 92.906,1.60, 8.570, "Metall", 4, 4),
|
||
new Element( 42, "Mo", "Molybdän", 95.950,2.16,10.220, "Metall", 4, 5),
|
||
new Element( 43, "Tc", "Technetium", 98.000,1.90,11.000, "Metall", 4, 6),
|
||
new Element( 44, "Ru", "Ruthenium", 101.070,2.20,12.370, "Metall", 4, 7),
|
||
new Element( 45, "Rh", "Rhodium", 102.910,2.28,12.410, "Metall", 4, 8),
|
||
new Element( 46, "Pd", "Palladium", 106.420,2.20,12.020, "Metall", 4, 9),
|
||
new Element( 47, "Ag", "Silber", 107.868,1.93,10.490, "Metall", 4, 10),
|
||
new Element( 48, "Cd", "Cadmium", 112.414,1.69, 8.650, "Metall", 4, 11),
|
||
new Element( 49, "In", "Indium", 114.818,1.78, 7.310, "Post-Übergangsmetall",4, 12),
|
||
new Element( 50, "Sn", "Zinn", 118.710,1.96, 7.287, "Post-Übergangsmetall",4, 13),
|
||
new Element( 51, "Sb", "Antimon", 121.760,2.05, 6.685, "Halbmetall", 4, 14),
|
||
new Element( 52, "Te", "Tellur", 127.600,2.10, 6.232, "Halbmetall", 4, 15),
|
||
new Element( 53, "I", "Iod", 126.900,2.66, 4.930, "Halogen", 4, 16),
|
||
new Element( 54, "Xe", "Xenon", 131.293,2.60, 0.006, "Edelgas", 4, 17),
|
||
|
||
// Sechste Periode
|
||
new Element( 55, "Cs", "Caesium", 132.910,0.79, 1.930, "Alkalimetall", 5, 0),
|
||
new Element( 56, "Ba", "Barium", 137.330,0.89, 3.620, "Erdalkalimetall", 5, 1),
|
||
// Das 4f-Block (57–71) folgt unten
|
||
new Element( 72, "Hf", "Hafnium", 178.490,1.30,13.310, "Metall", 5, 3),
|
||
new Element( 73, "Ta", "Tantal", 180.950,1.50,16.654, "Metall", 5, 4),
|
||
new Element( 74, "W", "Wolfram", 183.840,2.36,19.250, "Metall", 5, 5),
|
||
new Element( 75, "Re", "Rhenium", 186.210,1.90,21.020, "Metall", 5, 6),
|
||
new Element( 76, "Os", "Osmium", 190.230,2.20,22.590, "Metall", 5, 7),
|
||
new Element( 77, "Ir", "Iridium", 192.220,2.20,22.560, "Metall", 5, 8),
|
||
new Element( 78, "Pt", "Platin", 195.080,2.28,21.450, "Metall", 5, 9),
|
||
new Element( 79, "Au", "Gold", 196.970,2.54,19.320, "Metall", 5, 10),
|
||
new Element( 80, "Hg", "Quecksilber", 200.590,2.00,13.534, "Metall", 5, 11),
|
||
new Element( 81, "Tl", "Thallium", 204.380,1.62,11.850, "Post-Übergangsmetall",5, 12),
|
||
new Element( 82, "Pb", "Blei", 207.200,2.33,11.340, "Post-Übergangsmetall",5, 13),
|
||
new Element( 83, "Bi", "Bismut", 208.980,2.02, 9.780, "Post-Übergangsmetall",5, 14),
|
||
new Element( 84, "Po", "Polonium", 209.000,2.00, 9.196, "Post-Übergangsmetall",5, 15),
|
||
new Element( 85, "At", "Astat", 210.000,2.20, 7.000, "Halbmetall", 5, 16),
|
||
new Element( 86, "Rn", "Radon", 222.000,0.00, 0.010, "Edelgas", 5, 17),
|
||
|
||
// Siebte Periode (ohne 5f-Block)
|
||
new Element( 87, "Fr", "Francium", 223.000,0.70, 1.870, "Alkalimetall", 6, 0),
|
||
new Element( 88, "Ra", "Radium", 226.000,0.90, 5.500, "Erdalkalimetall", 6, 1),
|
||
new Element(104, "Rf", "Rutherfordium", 267.000,0.00,23.200, "Metall", 6, 3),
|
||
new Element(105, "Db", "Dubnium", 270.000,0.00,29.300, "Metall", 6, 4),
|
||
new Element(106, "Sg", "Seaborgium", 271.000,0.00,35.000, "Metall", 6, 5),
|
||
new Element(107, "Bh", "Bohrium", 270.000,0.00,37.100, "Metall", 6, 6),
|
||
new Element(108, "Hs", "Hassium", 270.000,0.00,41.000, "Metall", 6, 7),
|
||
new Element(109, "Mt", "Meitnerium", 278.000,0.00,27.000, "_", 6, 8),
|
||
new Element(110, "Ds", "Darmstadtium", 281.000,0.00,28.500, "_", 6, 9),
|
||
new Element(111, "Rg", "Roentgenium", 282.000,0.00,32.000, "_", 6, 10),
|
||
new Element(112, "Cn", "Copernicium", 285.000,0.00,23.700, "_", 6, 11),
|
||
new Element(113, "Nh", "Nihonium", 286.000,0.00,16.000, "_", 6, 12),
|
||
new Element(114, "Fl", "Flerovium", 289.000,0.00,14.000, "_", 6, 13),
|
||
new Element(115, "Mc", "Moscovium", 290.000,0.00,13.500, "_", 6, 14),
|
||
new Element(116, "Lv", "Livermorium", 293.000,0.00,12.900, "_", 6, 15),
|
||
new Element(117, "Ts", "Tennessine", 294.000,0.00, 7.200, "_", 6, 16),
|
||
new Element(118, "Og", "Oganesson", 294.000,0.00, 4.900, "_", 6, 17),
|
||
|
||
// Lanthanoide (La–Lu) → in Zeile 8 (4f-Block)
|
||
new Element( 57, "La", "Lanthan", 138.910,1.10, 6.145, "Lanthanoid", 8, 0),
|
||
new Element( 58, "Ce", "Cer", 140.120,1.12, 6.770, "Lanthanoid", 8, 1),
|
||
new Element( 59, "Pr", "Praseodym", 140.910,1.13, 6.773, "Lanthanoid", 8, 2),
|
||
new Element( 60, "Nd", "Neodym", 144.240,1.14, 7.007, "Lanthanoid", 8, 3),
|
||
new Element( 61, "Pm", "Promethium", 145.000,1.13, 7.260, "Lanthanoid", 8, 4),
|
||
new Element( 62, "Sm", "Samarium", 150.360,1.17, 7.520, "Lanthanoid", 8, 5),
|
||
new Element( 63, "Eu", "Europium", 151.960,1.20, 5.243, "Lanthanoid", 8, 6),
|
||
new Element( 64, "Gd", "Gadolinium", 157.250,1.20, 7.895, "Lanthanoid", 8, 7),
|
||
new Element( 65, "Tb", "Terbium", 158.930,1.10, 8.229, "Lanthanoid", 8, 8),
|
||
new Element( 66, "Dy", "Dysprosium", 162.500,1.22, 8.550, "Lanthanoid", 8, 9),
|
||
new Element( 67, "Ho", "Holmium", 164.930,1.23, 8.795, "Lanthanoid", 8, 10),
|
||
new Element( 68, "Er", "Erbium", 167.260,1.24, 9.066, "Lanthanoid", 8, 11),
|
||
new Element( 69, "Tm", "Thulium", 168.930,1.25, 9.321, "Lanthanoid", 8, 12),
|
||
new Element( 70, "Yb", "Ytterbium", 173.040,1.10, 6.965, "Lanthanoid", 8, 13),
|
||
new Element( 71, "Lu", "Lutetium", 174.970,1.27, 9.840, "Lanthanoid", 8, 14),
|
||
|
||
// Actinoide (Ac–Lr) → in Zeile 9 (5f-Block)
|
||
new Element( 89, "Ac", "Actinium", 227.000,1.10,10.070, "Actinoid", 9, 0),
|
||
new Element( 90, "Th", "Thorium", 232.040,1.30,11.720, "Actinoid", 9, 1),
|
||
new Element( 91, "Pa", "Protactinium", 231.040,1.50,15.370, "Actinoid", 9, 2),
|
||
new Element( 92, "U", "Uran", 238.030,1.38,18.950, "Actinoid", 9, 3),
|
||
new Element( 93, "Np", "Neptunium", 237.000,1.36,20.450, "Actinoid", 9, 4),
|
||
new Element( 94, "Pu", "Plutonium", 244.000,1.28,19.840, "Actinoid", 9, 5),
|
||
new Element( 95, "Am", "Americium", 243.000,1.30,13.670, "Actinoid", 9, 6),
|
||
new Element( 96, "Cm", "Curium", 247.000,1.30,13.510, "Actinoid", 9, 7),
|
||
new Element( 97, "Bk", "Berkelium", 247.000,1.30,14.790, "Actinoid", 9, 8),
|
||
new Element( 98, "Cf", "Californium", 251.000,1.30,15.100, "Actinoid", 9, 9),
|
||
new Element( 99, "Es", "Einsteinium", 252.000,1.30, 8.840, "Actinoid", 9, 10),
|
||
new Element(100, "Fm", "Fermium", 257.000,0.00, 9.700, "Actinoid", 9, 11),
|
||
new Element(101, "Md", "Mendelevium", 258.000,0.00,10.300, "Actinoid", 9, 12),
|
||
new Element(102, "No", "Nobelium", 259.000,0.00, 9.900, "Actinoid", 9, 13),
|
||
new Element(103, "Lr", "Lawrencium", 262.000,0.00,15.600, "Actinoid", 9, 14)
|
||
};
|
||
}
|
||
}
|