Bạn có thể cho tôi một sự hiểu biết gần như đơn giản về lớp trừu tượng so với sử dụng thừa kế và giúp tôi để tôi có thể thực sự hiểu khái niệm và cách triển khai không? Tôi có một dự án mà tôi đang cố gắng hoàn thành và bị mất về cách thực hiện. Tôi đã trò chuyện với giáo sư của mình và bị nói khá nhiều, nói rằng nếu tôi không thể đoán ra được, có lẽ tôi chưa sẵn sàng cho khóa học. Tôi đã TĂNG LƯỢNG các khóa học tiên quyết và vẫn gặp khó khăn khi hiểu các khái niệm này.Bạn có thể giúp tôi hiểu trong một ví dụ thực tế về các lớp trừu tượng sử dụng so với các giao diện không?
Để làm rõ, dự án như tôi đã thực hiện cho đến thời điểm này là dưới đây. Tôi chưa có lớp học chó/mèo vv. Bạn có thể cho tôi một con trỏ không. Tôi không yêu cầu ai cho tôi câu trả lời. Tôi chỉ mất đi nơi để đi với điều này. Tôi tham gia các khóa học trực tuyến và những nỗ lực giao tiếp của tôi với tôi đã gây rắc rối. Tôi vừa học xong 4.0 với tất cả các khóa học khác của mình, vì vậy tôi sẵn sàng bỏ công sức vào, nhưng tôi đã mất đi sự hiểu biết về các khái niệm này và cách THỰC HIỆN áp dụng chúng.
Bất kỳ nhận xét hoặc trợ giúp nào sẽ giúp tôi tiến xa hơn trong dự án này?
Các mô tả về những gì tôi đang thực hiện như sau:
Tổng quan:
Mục đích của bài tập này là chứng minh việc sử dụng các giao diện, thừa kế, Các lớp trừu tượng, và Đa hình. Nhiệm vụ của bạn là lấy vỏ chương trình được cung cấp và THÊM các lớp thích hợp thích hợp và lớp/phương pháp tương ứng để có được chương trình hoạt động chính xác này. Bạn có thể không thực hiện thay đổi đối với bất kỳ mã nào được cung cấp , bạn chỉ có thể thêm các lớp học bạn viết. Mặc dù có nhiều cách để làm cho chương trình hoạt động, bạn phải sử dụng các kỹ thuật mà chứng minh việc sử dụng Giao diện,
Thừa kế, Lớp trừu tượng và Đa hình. Một lần nữa, để làm rõ, bạn có thể thêm vào mã được cung cấp nhưng bạn không thể thay đổi hoặc xóa bất kỳ mã nào trong số nó. Mã được cung cấp sẽ hoạt động với rất ít mã bổ sung và sẽ đáp ứng các yêu cầu của bài tập.Nếu bạn hoàn thành công việc chuyển nhượng , chương trình của bạn nên đầu ra các báo cáo sau khi chạy:
Tên tôi là Spot, I am a Dog
Tên tôi là Felix, tôi là một Cát
Yêu cầu:
1) Bạn phải có một lớp trừu tượng cơ sở gọi là 'động vật' mà từ đó các Chó và Mèo c lasses lấy được.
2) Lớp Cơ sở động vật phải lấy được từ Giao diện 'IAnimal', là lớp duy nhất có nguồn gốc từ IAnimal.
3) Vì tất cả các động vật có một tên và một tên không phải là một thuộc tính đó là cụ thể cho một con chó hoặc một con mèo, các động vật
lớp cơ sở nên có nơi tên được lưu trữ và nơi WhatIsMyName get-tài sản được thực hiện.
4) Bạn sẽ cần phải tạo một Dog và một lớp học Cat sẽ chỉ lấy được từ lớp cơ sở Thú.
5) Lớp Dog và Cat nên triển khai thuộc tính getAmI và trả lại giá trị chuỗi thích hợp.
Mã bạn không thể thay đổi:
using System;
namespace IT274_U2
{
public interface IAnimal
{
string WhatAmI { get; }
string WhatIsMyName { get; }
}
public class TesterClass
{
public static void DescribeAnimal(IAnimal animal)
{
Console.WriteLine("My name is {0}, I am a {1}", animal.WhatIsMyName, animal.WhatAmI);
}
static void Main(string[] args)
{
Dog mydog = new Dog("Spot");
Cat mycat = new Cat("Felix");
DescribeAnimal(mydog);
DescribeAnimal(mycat);
}
}
}
///////////////////////
Mã tôi' đã viết cho đến thời điểm này:
using System;
namespace IT274_U2
{
public interface IAnimal
{
string WhatAmI { get; }
string WhatIsMyName { get; }
}
public class Dog
{
public abstract string WhatAmI
{
get;
set;
}
}//end public class Dog
public class Cat
{
public abstract string WhatIsMyName
{
get;
set;
}
}//end public class Cat
public abstract class Animal : IAnimal
{
// fields
protected string Dog;
protected string Cat;
// implement WhatIsMyName
//properties
public abstract String Dog
{
get;
set;
}
public abstract String Cat
{
get;
set;
}
public abstract string WhatIsMyName();
} //end public abstract class Animal
public class TesterClass
{
public static void DescribeAnimal(IAnimal animal)
{
Console.WriteLine("My name is {0}, I am a {1}", animal.WhatIsMyName, animal.WhatAmI);
}
static void Main(string[] args)
{
Dog mydog = new Dog("Spot");
Cat mycat = new Cat("Felix");
DescribeAnimal(mydog);
DescribeAnimal(mycat);
}
}
}
Mẫu mã trong bài đăng của bạn là mã mà bạn không được phép sửa đổi? –
@Mike - chỉ là những gì tôi sắp hỏi :) –
cập nhật câu hỏi ở trên với mã do giáo sư đưa ra và mã tôi đã viết. Cảm ơn vì điều đó, tôi thậm chí còn không cân nhắc. Anh ấy đã nói với tôi rằng tôi đã có đề cương chung ok, nhưng một lần nữa anh ấy đã đẩy tôi ra khỏi phiên khá nhanh, vì vậy chỉ nhìn qua một thời gian ngắn. – SheldonH