Implementasi Persegi Panjang
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan C di Coddy. Pelajaran 46 dari 61.
Tantangan
MudahMari lanjutkan membangun proyek Shape Drawer dengan mengimplementasikan Rectangle: bentuk konkret lain yang menyematkan struct dasar Shape, seperti yang kita lakukan dengan Circle.
Dengan melanjutkan proyek yang sudah ada, kamu akan menambahkan fungsionalitas rectangle di beberapa file berikut:
shape.h: Pertahankan antarmuka dasarShapedengan tipe pointer fungsiDrawFuncdanAreaFuncdari pelajaran sebelumnya.circle.hdancircle.c: Pertahankan implementasi Circle dari pelajaran sebelumnya.rectangle.h: Definisikan structRectangledi sini. Rectangle menyematkanShapesebagai member pertama dan menambahkan fieldwidthdanheight(keduanya bertipedouble). Deklarasikan fungsi konstruktorcreate_rectangleyang menerima parameter width dan height serta mengembalikanRectanglesebagai nilai.rectangle.c: Implementasikan perilaku khusus rectangle:draw_rectangle: mencetakDrawing Rectangle with width: X.XX and height: X.XX(kedua nilai ditampilkan dengan 2 angka di belakang koma)area_rectangle: mengembalikan width × heightcreate_rectangle: menginisialisasiRectangle, menghubungkan pointer fungsi milikShapeyang disematkan ke fungsi-fungsi rectangle, mengatur dimensinya, lalu mengembalikan rectangle
main.c: Tunjukkan kedua bentuk bekerja melalui antarmuka yang sama. Baca dua input: width dan height untuk rectangle. Buat rectangle menggunakan konstruktor, lalu panggildrawdanareamelalui pointer fungsi milikShapeyang disematkan. Cetak luas dengan 2 angka di belakang koma.
Programmu akan menerima dua input: nilai width dan height (sebagai angka floating-point).
Contoh output saat inputnya adalah 4.0 dan 3.0:
Drawing Rectangle with width: 4.00 and height: 3.00
Area: 12.00Contoh output saat inputnya adalah 7.5 dan 2.5:
Drawing Rectangle with width: 7.50 and height: 2.50
Area: 18.75Sama seperti Circle, Rectangle menyematkan Shape sebagai member pertamanya, sehingga kamu dapat mengakses pointer fungsi melalui member yang disematkan. Pola yang konsisten ini memungkinkan polimorfisme: kedua bentuk dapat diperlakukan secara seragam melalui antarmuka Shape. Ingat untuk menggunakan include guard di semua file header.
Coba sendiri
#include <stdio.h>
#include "shape.h"
#include "rectangle.h"
int main() {
double width, height;
scanf("%lf", &width);
scanf("%lf", &height);
// TODO: Buat persegi panjang menggunakan create_rectangle(width, height)
// TODO: Panggil draw melalui pointer fungsi milik Shape yang tertanam
// TODO: Panggil area melalui pointer fungsi milik Shape yang tertanam
// TODO: Cetak luas dengan 2 angka di belakang koma: "Area: %.2f\n"
return 0;
}Semua pelajaran di Pemrograman Berorientasi Objek
1Dasar-Dasar Pemrograman Modular
file headerProteksi includefile sumberFungsi StatisRingkasan: Kalkulator Modular4Enkapsulasi
Konsep Opaque PointerMendefinisikan Opaque StructGetter dan SetterValidasi pada SetterUlasan: Kotak Rahasia2Object dan method
Struct sebagai objectPointer 'self'Konsistensi constPointer vs nilaiMethod pembantuRangkuman: Pengelola Point5Proyek: Akun Bank Sederhana
Penyiapan ProyekImplementasi Akun3Siklus Hidup object
Pola KonstruktorPola DestruktorInisialisasi StackSalinan MendalamRangkuman: Pembungkus string6Pewarisan melalui Komposisi
Penyematan StructAturan Anggota PertamaMengakses Anggota ParentUpcastingRekap: Hierarki Bentuk9Proyek: Penggambar Bentuk
Ringkasan ProyekImplementasi LingkaranImplementasi Persegi PanjangPenggunaan PolimorfismeWadah BentukLatihan sendiri: Compiler C online