0Pricing
C# Academy · บทเรียน

การนำไปใช้งานและการทดสอบ

นำ Rectangle, Circle และ Triangle ไปใช้งาน เพิ่มการตรวจสอบอินพุตพื้นฐาน และเขียนการทดสอบเฉพาะกิจขนาดเล็กโดยไม่ใช้เฟรมเวิร์ก

การนำไปใช้งานและการทดสอบ เป็นบทเรียน C# Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 3 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน C# Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส C# Academy มีบทเรียนทั้งหมด 3 บทเรียน

แผนการนำไปใช้

เป้าหมาย: สร้างรูปทรงและตรวจสอบการทำงาน

  • สร้าง Rectangle, Circle และ Triangle
  • ป้องกันข้อมูลนำเข้าที่ไม่ถูกต้อง
  • เพิ่มเครื่องมือช่วยเหลือ Assert ขนาดเล็ก
  • เรียกใช้การตรวจสอบอย่างรวดเร็วใน Main

Rectangle และ Circle

เพิ่มการตรวจสอบอย่างง่ายในตัวสร้าง เพื่อให้ขนาดต่าง ๆ เป็นค่าบวก รักษาสูตรให้สั้นและชัดเจน

using System;

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

public sealed class Rectangle : IShape
{
  private readonly double _w, _h;

  public Rectangle(double w, double h)
  {
    if (w <= 0 || h <= 0) throw new ArgumentOutOfRangeException("w/h must be > 0");
    _w = w; _h = h;
  }

  public double Area() { return _w * _h; }
  public double Perimeter() { return 2 * (_w + _h); }
}

public sealed class Circle : IShape
{
  private readonly double _r;

  public Circle(double r)
  {
    if (r <= 0) throw new ArgumentOutOfRangeException("r must be > 0");
    _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());
  }
}

Triangle พร้อมการตรวจสอบ

ตรวจสอบด้านต่าง ๆ ตามเงื่อนไขของสามเหลี่ยม ใช้สูตรที่เป็นที่รู้จักและเขียนตัวเลขให้อ่านง่าย

using System;

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

public sealed class Triangle : IShape
{
  private readonly double _a, _b, _c;

  public Triangle(double a, double b, double c)
  {
    if (a <= 0 || b <= 0 || c <= 0) throw new ArgumentOutOfRangeException("sides must be > 0");
    // triangle inequality: each side < sum of other two
    if (a >= b + c || b >= a + c || c >= a + b) throw new ArgumentException("invalid triangle");
    _a = a; _b = b; _c = c;
  }

  public double Perimeter() { return _a + _b + _c; }

  // Herons formula for area
  public double Area()
  {
    double s = (_a + _b + _c) / 2.0;
		double value = s * (s - _a) * (s - _b) * (s - _c);
		return Math.Sqrt(value);
		}
}

public class Program
{
  public static void Main(string[] args)
  {
    IShape t = new Triangle(3, 4, 5);
		Console.WriteLine("Tri A=" + t.Area() + " P=" + t.Perimeter());
		}
}

เครื่องมือช่วยเหลือ Assert เฉพาะกิจ

สร้างคลาส Assert ขนาดเล็ก เปรียบเทียบค่าที่คาดหวังกับค่าจริงโดยยอมให้มีค่าความคลาดเคลื่อนสำหรับ double

using System;

		public static class Assert
			{
			// Approx compare for doubles (tolerance)
										  public static void AreClose(double expected, double actual, double eps, string msg)
  {
		if (Math.Abs(expected - actual) > eps)
			{
			throw new Exception("Assert failed: " + msg + " expected=" + expected + " actual=" + actual);
    }
    Console.WriteLine("OK: " + msg);
  }
}

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

public sealed class Rectangle : IShape
{
  private readonly double _w, _h;
  public Rectangle(double w, double h) { if (w <= 0 || h <= 0) throw new ArgumentOutOfRangeException(); _w = w; _h = h; }
  public double Area() { return _w * _h; }
  public double Perimeter() { return 2 * (_w + _h); }
}

public class Program
{
  public static void Main(string[] args)
  {
    Rectangle r = new Rectangle(3, 4);
    Assert.AreClose(12.0, r.Area(), 0.0001, "rectangle area");
    Assert.AreClose(14.0, r.Perimeter(), 0.0001, "rectangle perimeter");
  }
}

เรียกใช้การทดสอบอย่างรวดเร็ว

รวมการทดสอบสองสามรายการไว้ใน Main ทำให้ค่าที่คาดหวังเรียบง่ายและอ่านง่าย

using System;

public static class Assert
{
  public static void AreClose(double expected, double actual, double eps, string msg)
  {
    if (Math.Abs(expected - actual) > eps)
      throw new Exception("Assert failed: " + msg + " expected=" + expected + " actual=" + actual);
    Console.WriteLine("OK: " + msg);
  }
}

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

public sealed class Circle : IShape
{
  private readonly double _r;
  public Circle(double r) { if (r <= 0) throw new ArgumentOutOfRangeException(); _r = r; }
  public double Area() { return 3.14159 * _r * _r; }
  public double Perimeter() { return 2 * 3.14159 * _r; }
}

public sealed class Triangle : IShape
{
  private readonly double _a, _b, _c;
  public Triangle(double a, double b, double c)
  {
    if (a <= 0 || b <= 0 || c <= 0) throw new ArgumentOutOfRangeException();
    if (a >= b + c || b >= a + c || c >= a + b) throw new ArgumentException("invalid triangle");
    _a = a; _b = b; _c = c;
  }
  public double Perimeter() { return _a + _b + _c; }
  public double Area()
  {
    double s = (_a + _b + _c) / 2.0;
    return Math.Sqrt(s * (s - _a) * (s - _b) * (s - _c));
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    double eps = 0.001;

    Circle c = new Circle(2);
    Assert.AreClose(12.56636, c.Area(), eps, "circle area r=2");
    Assert.AreClose(12.56636, c.Perimeter(), eps, "circle peri r=2");

    Triangle t = new Triangle(3, 4, 5);
    Assert.AreClose(12.0, t.Perimeter(), eps, "triangle perimeter 3-4-5");
    Assert.AreClose(6.0, t.Area(), eps, "triangle area 3-4-5");
  }
}

เคล็ดลับการนำไปใช้

รายการตรวจสอบ:

  • ตรวจสอบข้อมูลนำเข้าในตัวสร้าง
  • เขียนสูตรให้สั้น และใช้ค่าคงที่ภายในสำหรับค่า pi
  • สร้าง Assert ขนาดเล็กสำหรับการทดสอบเฉพาะกิจ
  • ทดสอบทั้ง Area และ Perimeter สำหรับรูปทรงแต่ละชนิด

แนวคิดการทดสอบเฉพาะกิจ

ตรวจสอบความเข้าใจ: วิธีง่าย ๆ ในการทดสอบไลบรารีขนาดเล็กโดยไม่ใช้กรอบงานทดสอบคืออะไร

ทบทวน

ทบทวน: สร้างรูปทรงพร้อมการตรวจสอบที่ชัดเจน จากนั้นตรวจสอบด้วยเครื่องมือช่วยเหลือ Assert ขั้นต่ำใน Main ทำให้การทดสอบมีขนาดเล็กและให้ผลแน่นอน

คำถามที่พบบ่อย

บทเรียน “การนำไปใช้งานและการทดสอบ” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การนำไปใช้งานและการทดสอบ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส C# Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส C# Academy มีบทเรียนทั้งหมด 3 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การนำไปใช้งานและการทดสอบ”

นำ Rectangle, Circle และ Triangle ไปใช้งาน เพิ่มการตรวจสอบอินพุตพื้นฐาน และเขียนการทดสอบเฉพาะกิจขนาดเล็กโดยไม่ใช้เฟรมเวิร์ก คุณปฏิบัติ C# Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน C# Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน C# Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 3 บทเรียน

บทเรียน “การนำไปใช้งานและการทดสอบ” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน C# Academy นี้ได้ไหม

ได้ บทเรียน C# Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การออกแบบ (อินเทอร์เฟซและการสืบทอด)
  2. การนำไปใช้งานและการทดสอบ
  3. พฤติกรรมแบบพหุรูปแบบ
← กลับไปที่ C# Academy