C# Academy · Oppitunti

Suunnittelu (rajapinnat ja periytyminen)

Suunnitelkaa yksinkertainen Shape-API rajapinnan ja pienen kantaluokan avulla sekä päättäkää, mikä kuuluu sopimukseen ja mikä toteutuksen yksityiskohtiin.

Oppitunti 1/38 vaihetta

Suunnittelu (rajapinnat ja periytyminen) on ilmainen C# Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/3. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu C# Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. C# Academy-kurssilla on yhteensä 3 oppituntia.

Projektin yleiskatsaus

Tavoite: Määrittäkää pieni ja selkeä sopimus muodoille.

  • Käyttäkää rajapintaa toiminnan kuvaamiseen
  • Pidätte rajapinnan mahdollisimman suppeana
  • Mahdollistatte monien muotojen liittämisen mukaan

Sopimus ensin

Luokaa pieni IShape-sopimus, jossa on metodit Area() ja Perimeter(). Apuohjelmat voivat riippua rajapinnasta.

using System;

// Interface: minimal behavior all shapes must provide
public interface IShape
{
  double Area();
  double Perimeter();
}

// A tiny helper to print any IShape
public static class ShapePrinter
{
  public static void Print(IShape s)
  {
    Console.WriteLine("A=" + s.Area() + " P=" + s.Perimeter());
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    // No concrete shapes yet; interface compiles and is ready.
    Console.WriteLine("Shape API ready");
  }
}

Valinnainen kantaluokka

Voitte lisätä pienen abstraktin kantaluokan jaettuja apumetodeja varten, mutta pitäkää rajapinta virallisena sopimuksena.

using System;

// Optional base for helpers; interface stays the main contract
public abstract class ShapeBase : IShape
{
  public abstract double Area();
  public abstract double Perimeter();

  // Shared rounding helper
  protected double Round2(double x)
  {
    return Math.Round(x, 2);
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    Console.WriteLine("Base class prepared for shared helpers");
  }
}

Konkreettiset muodot

Konkreettiset muodot toteuttavat rajapinnan. Asiakasohjelmat voivat käsitellä niitä yhdenmukaisesti IShape-rajapinnan kautta.

using System;

public interface IShape
{
  double Area();
  double Perimeter();
}

public class Rectangle : IShape
{
  private readonly double _w, _h;
  public Rectangle(double w, double h) { _w = w; _h = h; }
  public double Area() { return _w * _h; }
  public double Perimeter() { return 2 * (_w + _h); }
}

public class Circle : IShape
{
  private readonly double _r;
  public Circle(double r) { _r = r; }
  public double Area() { return 3.14159 * _r * _r; }
  public double Perimeter() { return 2 * 3.14159 * _r; }
}

public class Program
{
  public static void Main(string[] args)
  {
    IShape a = new Rectangle(3, 4);
    IShape b = new Circle(2);
    Console.WriteLine("Rect A=" + a.Area() + " P=" + a.Perimeter());
    Console.WriteLine("Circ A=" + b.Area() + " P=" + b.Perimeter());
  }
}

IShape-kokoelmat

Käyttäkää List<IShape>-listaa useiden muotojen tallentamiseen ja käsitelkää niitä samalla tavalla.

using System;
using System.Collections.Generic;

public interface IShape
{
  double Area();
  double Perimeter();
}

public class Rectangle : IShape
{
  private readonly double _w, _h;
  public Rectangle(double w, double h) { _w = w; _h = h; }
  public double Area() { return _w * _h; }
  public double Perimeter() { return 2 * (_w + _h); }
}

public class Circle : IShape
{
  private readonly double _r;
  public Circle(double r) { _r = r; }
  public double Area() { return 3.14159 * _r * _r; }
  public double Perimeter() { return 2 * 3.14159 * _r; }
}

public class Program
{
  public static void Main(string[] args)
  {
    List<IShape> shapes = new List<IShape>();
    shapes.Add(new Rectangle(2, 5));
    shapes.Add(new Circle(1.5));

    foreach (IShape s in shapes)
    {
      Console.WriteLine("A=" + s.Area() + " P=" + s.Perimeter());
    }
  }
}

Suunnittelun tarkistuslista

Tarkistuslista:

  • Rajapinta on pieni ja selkeä sopimus.
  • Konkreettiset muodot pitävät kentät private-määritteisinä.
  • Käyttäkää yksinkertaisessa matematiikassa double-arvoja ja pitäkää vakiot paikallisina.
  • Suosikaa polymorfismia tyyppitarkistusten sijaan.

Sopimuksen valinta

Pikakysymys: Mitä julkisen sopimuksen pitäisi tarjota muotokirjastossa, jonka on toimittava monien erilaisten muotojen kanssa?

Kertaus

Kertaus: Määrittäkää pieni IShape-rajapinta, pitäkää sisäiset toteutukset private-määritteisinä ja käyttäkää rajapinnan kokoelmia polymorfiseen käsittelyyn.

Aloita maksutta

Opi C# tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
93
Oppitunnit
346

Usein kysytyt kysymykset

Onko oppitunti ”Suunnittelu (rajapinnat ja periytyminen)” ilmainen?

Kyllä – oppitunnin ”Suunnittelu (rajapinnat ja periytyminen)” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko C# Academy-kurssin, päivitä CoddyKit PROhon. C# Academy-kurssilla on yhteensä 3 oppituntia.

Mitä opin oppitunnilla ”Suunnittelu (rajapinnat ja periytyminen)”?

Suunnitelkaa yksinkertainen Shape-API rajapinnan ja pienen kantaluokan avulla sekä päättäkää, mikä kuuluu sopimukseen ja mikä toteutuksen yksityiskohtiin. Harjoittelet C# Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni C# Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin C# Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/3.

Kuinka kauan ”Suunnittelu (rajapinnat ja periytyminen)”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä C# Academy-oppitunnilla?

Kyllä. Jokainen C# Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Suunnittelu (rajapinnat ja periytyminen)
  2. Toteutus ja testit
  3. Polymorfiset toimintatavat
← Takaisin: C# Academy