Ringkasan, Kalkulator Bentuk
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan C# di Coddy. Pelajaran 30 dari 70.
Tantangan
MudahMari kita buat kalkulator bentuk yang menggabungkan semua yang telah kamu pelajari tentang interface dan polimorfisme. Kamu akan membuat sistem yang dapat memproses berbagai bentuk secara seragam melalui interface umum, untuk menunjukkan keunggulan polimorfisme saat runtime.
Kamu akan mengatur kodemu dalam empat file:
IShape.cs: Definisikan interface bernamaIShapedi namespaceShapes. Setiap bentuk harus dapat menghitung luasnya dan mendeskripsikan dirinya. Deklarasikan dua method:CalculateArea()yang mengembalikandouble, danGetDescription()yang mengembalikanstring.Circle.cs: Buat classCircledi namespaceShapesyang mengimplementasikanIShape. Lingkaran memiliki propertyRadius(double) yang ditetapkan melalui konstruktornya. Rumus luasnya adalahMath.PI * Radius * Radius. Deskripsinya harus mengembalikan"Circle with radius {Radius}".Rectangle.cs: Buat classRectangledi namespaceShapesyang mengimplementasikanIShape. Persegi panjang memiliki propertyWidthdanHeight(keduanya double) yang ditetapkan melalui konstruktornya. Luasnya adalah lebar dikalikan tinggi. Deskripsinya harus mengembalikan"Rectangle {Width}x{Height}".Program.cs: Di file utama, buat lingkaran dan persegi panjang menggunakan nilai input, lalu simpan keduanya dalam array berisi referensiIShape. Lakukan perulangan pada array dan untuk setiap bentuk, cetak deskripsinya, lalu luasnya yang dibulatkan hingga dua angka desimal. Ini menunjukkan bagaimana kamu dapat memproses bentuk-bentuk yang sangat berbeda melalui interface yang sama!
Kamu akan menerima tiga input:
- Jari-jari lingkaran (double)
- Lebar persegi panjang (double)
- Tinggi persegi panjang (double)
Cetak output dengan format berikut untuk setiap bentuk:
{GetDescription() result}
Area: {CalculateArea() rounded to 2 decimal places}Misalnya, jika inputnya adalah 5, 4, dan 6, outputnya seharusnya:
Circle with radius 5
Area: 78.54
Rectangle 4x6
Area: 24.00Perhatikan bahwa perulanganmu tidak perlu mengetahui apakah bentuk yang diproses adalah lingkaran atau persegi panjang, perulangan cukup memanggil method pada interface dan membiarkan polimorfisme menangani sisanya. Inilah keunggulan pemrograman berbasis interface!
Coba sendiri
using System;
using Shapes;
class Program
{
public static void Main(string[] args)
{
// Baca nilai input
double circleRadius = Convert.ToDouble(Console.ReadLine());
double rectWidth = Convert.ToDouble(Console.ReadLine());
double rectHeight = Convert.ToDouble(Console.ReadLine());
// TODO: Buat object Circle dengan jari-jari yang diberikan
// TODO: Buat object Rectangle dengan lebar dan tinggi yang diberikan
// TODO: Buat array IShape yang berisi kedua bentuk
// TODO: Ulangi setiap elemen dalam array, lalu untuk setiap bentuk:
// - Tampilkan deskripsinya menggunakan GetDescription()
// - Tampilkan "Area: " diikuti hasil CalculateArea() yang dibulatkan ke 2 angka di belakang koma
}
}
Semua pelajaran di Pemrograman Berorientasi Objek
1Dasar-Dasar OOP
File EksternalNamespace & DirektifPengantar class & objectKata Kunci 'this'Method dan ParameterField vs PropertyKonstruktorInisialisasi objectRingkasan: Kalkulator Sederhana4Pewarisan
Sintaks Dasar Pewarisan (:)Kata Kunci 'base'Kata Kunci Virtual & OverrideClass SealedBase Class 'object'Rangkuman: Hierarki Karyawan7Fitur Lanjutan
Overloading OperatorIndexer (this[])Penimpaan ToString()Extension methodRingkasan: Custom list2Property & Anggota Statis
Property yang Diimplementasikan OtomatisProperty Hanya Baca dan Hanya TulisField dan method StatisClass StatisAnggota Berbentuk Ekspresi5Polimorfisme & Antarmuka
Polimorfisme saat kompilasi vs runtimeAntarmuka vs kelas abstrakBeberapa antarmukaAntarmuka eksplisitUpcasting & DowncastingRingkasan, Kalkulator Bentuk8Konsep OOP Lanjutan
Komposisi daripada PewarisanGenerics (class dan method)Delegate dan EventAtribut dan ReflectionIDisposable dan Pernyataan usingDasar-Dasar Dependency Injection11Pola Desain Bagian 2
Pola PerintahPola AdapterPola DecoratorPola Template MethodPola StatePola CompositeLatihan sendiri: Compiler C# online