面向对象设计与分析的一个小问题.

陈政 2012-11-01 06:40:39
本人菜鸟,说错了的,请指教.

一个很简单的功能,但是要遵循面向对象原则,现在能实现的是按下按钮,如果门是开的,则关上,如果是关的,则打开,但是现在需要这样:"门是开的,则关上,如果是关的,则打开"这里相同,但是,打开门口,隔10秒,门会自动关闭,.!

一下是现功能代码,表达的不是很好,.
DogDoor.cs:
namespace DogDoor
{
public class DogDoor
{
public static Boolean open;

public DogDoor()
{
//
}

public bool toOpen()
{
open = true;
return open;
}
public bool toClose()
{
open = false;
return open;
}
public Boolean isOpen()
{
return open;
}
}
}
Remote.cs:
public class Remote
{
private DogDoor door;

public Remote(DogDoor door)
{
this.door = door;
}

public bool pressButton()
{

if (door.isOpen() == true)
{
return this.door.toClose();

}
else
{
return this.door.toOpen();
}
}
}
下面是页面代码:
public partial class DoorTest : System.Web.UI.Page
{
DogDoor door = new DogDoor();

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DogDoor.open = true;
}
}

protected void btnDoor_Click(object sender, EventArgs e)
{
Remote remote = new Remote(door);
Response.Write(remote.pressButton());
}
}
...全文
137 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhujiawei7 2012-11-02
  • 打赏
  • 举报
回复
可以用Timeer,或者加个Opened事件采用委托的方式
guoweidong 2012-11-02
  • 打赏
  • 举报
回复
这种简单的用Timer是最好的,开门就开启Timer,10秒后也自动关了Timer

用线程也可以。
陈政 2012-11-02
  • 打赏
  • 举报
回复
楼上两个方法都没用的啊,我要求实现的是(比如):点下按钮,页面上显示的是"狗门已开",十秒后,页面然后显示成"狗门已关",.但是页面上总不能用个Timer吧,这样好像就违反了面向对象设计原则...就大虾指教啊,.!
BinaryTreeEx 2012-11-02
  • 打赏
  • 举报
回复
用线程或者Timer
wangyd324 2012-11-02
  • 打赏
  • 举报
回复
class Door
{
public static bool flag;//true 表示打开 false 表示关闭
public static void OpenDoor()
{
Console.WriteLine("open the door!");
Door.flag = true;
Timer time = new Timer(new TimerCallback(CloseDoor), null, 10000, 0);
}
public static void CloseDoor(object o)
{
Console.WriteLine("close the door!");
Door.flag = false;
}
}
class Program
{
static void Main(string[] args)
{
Door.flag = false;
while (true)
{
if (Door.flag == true)
{
Door.CloseDoor(null);
}
else
{
Door.OpenDoor();
}
Console.ReadLine();
}
}
}
xboxeer 2012-11-01
  • 打赏
  • 举报
回复
class A
{
public A(){}
public virtual void OpenDoor(){开门}
public void CloseDoor(){关门}
}
class B:A
{
public override void OpenDoor()
{
base.OpenDoor();
Thread.Sleep(1000);
base.CloseDoor();
}
}

13,190

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 分析与设计
社区管理员
  • 分析与设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧