Дизайн класса Corona Virus с использованием шаблона Composite

Я написал следующий код с намерением сделать его составным шаблоном: Я не уверен, передал ли я здесь намерение составного шаблона. Хотя согласно UML-диаграмме составного шаблона есть компонентный, листовой и составной
Но я не уверен, что это действительный дизайн составного шаблона в смысле варианта использования.

# Component
# interface for objects in the composition of 
# leaf and composite nodes

class Component:
    # size of sequence
    def display(self):
        pass

# RNA sequence 
class RNALeaf(Component):
    def __init__(self, name, rna_sequence):
        self.__rna_sequence = rna_sequence
        self.__name = name
    def display(self):
        print("RNA sequence: " + self.__name + " " + str(self.__rna_sequence))


# Amino acid sequence        
class AminoAcidLeaf(Component):
    def __init__(self, name, amino_acid_sequence):
        self.__amino_acid_sequence = amino_acid_sequence
        self.__name = name

    def display(self):
        print("Amino Acid sequence: " + self.__name + " " + str(self.__amino_acid_sequence))

class Composite(Component): 
    def __init__(self):
        Component.__init__(self)
        self._children = list()

    def display(self):
        for child in self._children:
            child.operation()

    def add(self, component):
        self._children.append(component)

    def remove(self, component):
        self._children.remove(component)


def main ():
    # Creating a composite consisting of covid known RNA segments and Amino Acid 
    # segments. A different strain of corona virus with a mutated RNA and its
    # corresponding amino acid sequence can be created by constructing a new
    # RNA and amino acid leaf with the mutation and adding (replacing) the 
    # original sequence.
    rna_one = RNALeaf('untranslated_region', cc[0:265])
    rna_two = RNALeaf('orf1a',cc[266-1:13483])
    rna_three = RNALeaf('orf1b',cc[13468-1:21555])
    rna_four = RNALeaf('spike_glycoprotein',cc[21563-1:25384])
    rna_five = RNALeaf('orf3a',cc[25393-1:26220])
    rna_six = RNALeaf('envelope_protein',cc[26245-1:26472])
    rna_seven = RNALeaf('membrane_glycoprotein',cc[26523-1:27191])
    rna_eight = RNALeaf('orf6',cc[27202-1:27387])
    rna_nine = RNALeaf('orf7a',cc[27394-1:27759])
    rna_ten = RNALeaf('orf7b',cc[27756-1:27887])
    rna_eleven = RNALeaf('orf8',cc[27894-1:28259])
    rna_twelve = RNALeaf('nucleocapsid_phosphoprotein',cc[28274-1:29533])
    rna_thirteen = RNALeaf('orf10',cc[29558-1:29674])



    aa_one = AminoAcidLeaf('orf1a',translate(cc[266-1:13483], True))
    aa_two = AminoAcidLeaf('orf1b',translate(cc[13468-1:21555], False).strip("*"))
    aa_three = AminoAcidLeaf('spike_glycoprotein',translate(cc[21563-1:25384], True))
    aa_four = AminoAcidLeaf('orf3a',translate(cc[25393-1:26220], True))
    aa_five = AminoAcidLeaf('envelope_protein',translate(cc[26245-1:26472], True))
    aa_six = AminoAcidLeaf('membrane_glycoprotein',translate(cc[26523-1:27191], True))
    aa_seven = AminoAcidLeaf('orf6',translate(cc[27202-1:27387], True))
    aa_eight = AminoAcidLeaf('orf7a',translate(cc[27394-1:27759], True))
    aa_nine = AminoAcidLeaf('orf7b',translate(cc[27756-1:27887], True))
    aa_ten = AminoAcidLeaf('orf8',translate(cc[27894-1:28259], True))
    aa_eleven = AminoAcidLeaf('nucleocapsid_phosphoprotein',translate(cc[28274-1:29533], True))
    aa_twelve = AminoAcidLeaf('orf10',translate(cc[29558-1:29674], True))


    corona_composite = Composite()
    corona_composite.add(rna_one)
    corona_composite.add(rna_two)
    corona_composite.add(rna_three)
    corona_composite.add(rna_four)
    corona_composite.add(rna_five)
    corona_composite.add(rna_six)
    corona_composite.add(rna_seven)
    corona_composite.add(rna_eight)
    corona_composite.add(rna_nine)
    corona_composite.add(rna_ten)
    corona_composite.add(rna_eleven)
    corona_composite.add(rna_twelve)
    corona_composite.add(rna_thirteen)
    corona_composite.add(aa_one)
    corona_composite.add(aa_two)
    corona_composite.add(aa_three)
    corona_composite.add(aa_four)
    corona_composite.add(aa_five)
    corona_composite.add(aa_six)
    corona_composite.add(aa_seven)
    corona_composite.add(aa_eight)
    corona_composite.add(aa_nine)
    corona_composite.add(aa_ten)
    corona_composite.add(aa_eleven)
    corona_composite.add(aa_twelve)

0

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *