Implementacja klasy jako immutable

Implementacja klasy jako immutable
KA
  • Rejestracja:około 5 lat
  • Ostatnio:około 5 lat
  • Postów:2
0

Witam

Mam do napisania taki kod na studiach lecz dopiero zaczynam przygodę z c# bardzo proszę o pomoc.

Zaimplementuj klasę Pizza jako immutable. Uwzględnij takie właściwości jak:

ilość pomidorów
ilość sera
rozmiar pizzy (średnica)
rodzaj ciasta (cienkie, średnie i grube) - jako ENUM
Dodaj metody typpu setter, które zmieniają stan poprzez tworzenie nowych obiektów.

Stwórz kilka obiektów klasy Pizza i spróbuj zmienić ich stan.

edytowany 1x, ostatnio: Adam Boduch
AK
Dawaj temat który coś znaczy. Pomocy to chce każdy pytający. I nie krzycz
lion137
  • Rejestracja:około 8 lat
  • Ostatnio:około godziny
  • Postów:4937
0

Cool, z czym Masz problem?


DA
  • Rejestracja:około 9 lat
  • Ostatnio:ponad 3 lata
  • Postów:25
0

Przede wszystkim pokaż co do tej pory napisałeś.

KA
  • Rejestracja:około 5 lat
  • Ostatnio:około 5 lat
  • Postów:2
0

Problem w tym, że nie wiem jak się za to zabrać w związku z tymi zajęciami online nie wiele można było się nauczyć, a spotkało mnie takie zadanie

AK
  • Rejestracja:prawie 7 lat
  • Ostatnio:około miesiąc
  • Postów:3561
0
Kamilmis napisał(a):

Problem w tym, że nie wiem jak się za to zabrać w związku z tymi zajęciami online nie wiele można było się nauczyć, a spotkało mnie takie zadanie

Taaaak, i policja odcięła internet.
Pierwsza strona kwerendy w google (pytanie w języku polskim o immutable) zwraca bardzo ciekawe artykuły.

Studia z góry zakładają aktywność własną, to znaczy czasownik "studiować".


Bo C to najlepszy język, każdy uczeń ci to powie
edytowany 3x, ostatnio: AnyKtokolwiek
CW
  • Rejestracja:około 9 lat
  • Ostatnio:prawie 3 lata
  • Postów:251
0

Tragedią jest to, że prosisz o podstawy podstaw. Przecież tworzenie takiej klasy jest w każdej książce o programowaniu c# na początku rozdziału o klasach. Wariant może być tylko inny np. klasa książki, samochody lub osoby, ale koncepcja ciągle jest ta sama i trzeba doczytać co znaczy Immutable. Mam nadzieję, że nie studiujesz informatyki lub pokrewnego kierunku.

edytowany 2x, ostatnio: cw
ZS
Cześć, także uczę się programowania i mam małe pytanie. Klasy niemutowalne to takie dla których stanu nie możemy zmienić po stworzeniu obiektu? Np. w tym przypadku jak stworzymy obiekt Pizzy, to już nie możemy zmieni np. ilość sera?
CW
tu masz fajne wyjaśnienie do czego się to przydaje http://www.pzielinski.com/?p=1127
somekind
A jak upieczesz pizzę, to dowalasz na nią dodatkowy ser później?
JP
A ketchup? No co z ketchupem?
somekind
Z keczupem? Nie wiem, frytki, parówki, na pewno nie pizza.
Radek Ciszke
  • Rejestracja:około 5 lat
  • Ostatnio:około 5 lat
  • Postów:1
0

Zabawne jest to, że nie możecie pomóc chłopakowi w potrzebie, tylko spuszczacie się nad sobą mówiąc jaką tragedią jest to, że nie rozumie podstaw.
Sam pracuje w IT, projektuje sieci, ale programowania kompletnie nie rozumiem, bo to nie moja działka. Wy zamiast pomóc, pokazać jak zacząć (jak przystało na lepszego w danym fachu) wręcz demotywujecie do dalszego działania. Wstyd za takich ludzi w IT, nic tylko pluć na was.

Zobacz pozostałe 4 komentarze
AK
@AdamWox: Sieci też trudne, ale nie ma problemu, potrzeba licznych rąk do zbierania owoców i warzyw ...
AdamWox
@AnyKtokolwiek: Jestem w stanie zrozumieć dlaczego tak się tutaj robi i uważam, że to jest dobre podejście. Jednocześnie rozumiem autora. Wszystko zależy od prowadzącego, jakie są materiały, co zostało omówione. Ja sam miałem tragicznych wykładowców. Fakt, faktem jest google i stackoverflow, ale wydaje mi się, że autor ma też problem z angielskim stąd post na tym forum ;-)
somekind
@AdamWox, ale przecież pełno jest informacji o podstawach C# po polsku.
AdamWox
@somekind: No to się poddaje :-)
AK
Znalazłem o klasach C# immutable po polsku skolko ugodno
somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:około 2 godziny
  • Lokalizacja:Wrocław
1

@Kamilmis: napisz klasę, a my Ci powiemy, czy jest ona immutable czy nie.
Jeśli nie wiesz jak napisać klasę, to spróbuj się dowiedzieć np. tutaj: https://pl.wikibooks.org/wiki/C_Sharp/Klasa

MM
  • Rejestracja:około 5 lat
  • Ostatnio:prawie 5 lat
  • Postów:18
0

"Zaimplementuj klasę Pizza jako immutable. Uwzględnij takie właściwości jak:"
"Stwórz kilka obiektów klasy Pizza i spróbuj zmienić ich stan."

Co? Ale po co zmieniać ich stan?

AK
Być może "spróbuj" ma sens: zobacz, że w IDE nie da się napisać kodu do zmiany
ZK
  • Rejestracja:prawie 7 lat
  • Ostatnio:6 miesięcy
  • Postów:273
0

Przykładem takiego typu jest np. Klasa String albo struktura Decimal jak i wszystkie typy podstawowe takie jak int, long, bool, double. Nie zmieniamy obiektu , tylko za każdym razem tworzymy nowy

Kopiuj
using System;
namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            Decimal varDec1 = 10M;
            varDec1 = 20M;
        }
    }
}

Jak widać poniżej . Każde przypisanie to utworzenie nowej struktury .
Nowa struktura może znajdować się pod tym samym adresem pamięci ale to już nie jest ta sama struktura.

Kopiuj
.method private hidebysig static void  Main(string[] args) cil managed
{
  .entrypoint
  // Code size       20 (0x14)
  .maxstack  2
  .locals init ([0] valuetype [mscorlib]System.Decimal varDec1)
  IL_0000:  nop
  IL_0001:  ldloca.s   varDec1
  IL_0003:  ldc.i4.s   10
  IL_0005:  call       instance void [mscorlib]System.Decimal::.ctor(int32)
  IL_000a:  ldloca.s   varDec1
  IL_000c:  ldc.i4.s   20
  IL_000e:  call       instance void [mscorlib]System.Decimal::.ctor(int32)
  IL_0013:  ret
}

albo typ podstawowy String

Kopiuj
using System;
namespace ConsoleApp27
{
    class Program
    {
        static void Main(string[] args)
        {
            String str1 = "jakiś tekst1";
            String temp = str1;
            str1 = "jakiś tekst2";
            Console.WriteLine(Object.ReferenceEquals(str1, temp));
        }
    }
}

edytowany 9x, ostatnio: Zimny Krawiec

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.