Ringkasan: Kalkulator Sederhana
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan C# di Coddy. Pelajaran 9 dari 70.
Tantangan
SulitBuat class Calculator lengkap dalam namespace CalculatorApp.Core yang menunjukkan semua konsep yang telah dipelajari:
- Field: Field privat untuk
memory(decimal) danoperationCount(int) - Property: Property yang diimplementasikan secara otomatis, yaitu
Name, serta property hanya-bacaMemorydanOperationCount - Konstruktor: Konstruktor dengan parameter name, dan konstruktor default yang menggunakan constructor chaining
- Method:
Add,Subtract,Multiply,Divide,Power, danSquareRoot
Semua method harus menambah nilai operationCount. Method Add juga harus menyimpan hasilnya di memory.
Catatan: Gunakan Math.Pow() untuk Power dan Math.Sqrt() untuk SquareRoot. Ubah parameter ke double jika diperlukan.
Coba sendiri
using System;
using CalculatorApp.Core;
class Program
{
static void Main()
{
string name = Console.ReadLine();
decimal num1 = decimal.Parse(Console.ReadLine());
decimal num2 = decimal.Parse(Console.ReadLine());
// Buat kalkulator dengan konstruktor yang menerima nama
Calculator calc = new Calculator(name);
Console.WriteLine($"Calculator: {calc.Name}");
Console.WriteLine($"Memory: {calc.Memory}");
// Lakukan operasi
decimal addResult = calc.Add(num1, num2);
Console.WriteLine($"Add: {addResult}");
decimal subtractResult = calc.Subtract(num1, num2);
Console.WriteLine($"Subtract: {subtractResult}");
decimal multiplyResult = calc.Multiply(num1, num2);
Console.WriteLine($"Multiply: {multiplyResult}");
decimal divideResult = calc.Divide(num1, num2);
Console.WriteLine($"Divide: {divideResult}");
Console.WriteLine($"Memory after operations: {calc.Memory}");
decimal powerResult = calc.Power(num1, num2);
Console.WriteLine($"Power: {powerResult}");
decimal sqrtResult = calc.SquareRoot(num2);
Console.WriteLine($"Square Root: {sqrtResult}");
Console.WriteLine($"History: {calc.OperationCount} operations");
}
}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