Facebook Sharer
选择您要替换的背景颜色:
【农历新年】背景图片:
个性化设定
 注册  找回密码
打印 上一主题 下一主题

[讨论][C#][JAVA][PHP] OOP 的逻辑, 如何写个好CLASS?

[复制链接]

4

主题

0

好友

476

积分

翡翠长老

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

11#
发表于 2009-12-7 02:21 AM |只看该作者
原帖由 Super-Tomato 于 2009-12-7 12:32 AM 发表



對啊。。。想想如果你把 db 连接等都写在 employee 的話,那麼你的程式就写死了
db 可以是 Oracle, DB2, MSSQL, MySQL等,只要写個 interface 提供給程式的話,你的 employee 就可以不用再重写的情況下完 ...



佩服,高手


回复

使用道具 举报

46

主题

6

好友

6456

积分

百变名嘴

Rank: 13Rank: 13Rank: 13Rank: 13

12#
发表于 2009-12-7 03:31 AM |只看该作者
原帖由 Super-Tomato 于 2009-12-7 12:32 AM 发表



對啊。。。想想如果你把 db 连接等都写在 employee 的話,那麼你的程式就写死了
db 可以是 Oracle, DB2, MSSQL, MySQL等,只要写個 interface 提供給程式的話,你的 employee 就可以不用再重写的情況下完 ...


请你举个例子来, 实例。 Interface 是怎样的情况下用到。

假设 DB 是个Interface 他的 method 有 insert, update , delete 的话? 这样如何?


回复

使用道具 举报

7

主题

1

好友

5108

积分

一流名嘴

Rank: 12Rank: 12Rank: 12

13#
发表于 2009-12-7 05:45 AM |只看该作者
原帖由 宅男-兜着走 于 2009-12-7 03:31 AM 发表


请你举个例子来, 实例。 Interface 是怎样的情况下用到。

假设 DB 是个Interface 他的 method 有 insert, update , delete 的话? 这样如何?




Interface

insert, update, delete 并不是 db 的 method 而是 employee 的方法
每样對象(object) 都有個字的属性与方法,如果你把 insert, update, delete 方法赋予在 db 的 class 中,那麼這個 db class 就只能专給 employee 而使用了

所谓 db 當然目的就是与資料庫做沟通,所以其方法就是做 connect, query, close 等
回顾你的 Java 怎么引用车子为教學例子, 如

public interface operateVehicle {
     bool start();
     bool stop();
     void turn(Direction dir, float radius, float speed);
}

public class Vehicle implements operateVehicle {
     public Vehicle() {}
     public bool start() {}
     public bool stop() {}
     public void turn(Direction dir, float radius, float speed) {}
     .....
}



public class Car extends Vehicle {
    public Car() {}
}

public class Van extends Vehicle {
   public Van() {}
}

public class Example {
    public static void main(String args[]) {
        Car myCar1 = new Car();
        Van myVan1 = new Van();
    }
}


回复

使用道具 举报

13

主题

0

好友

2113

积分

白金长老

Rank: 10

14#
发表于 2009-12-7 11:08 AM |只看该作者


随便画的
我好像不对呢


回复

使用道具 举报

46

主题

6

好友

6456

积分

百变名嘴

Rank: 13Rank: 13Rank: 13Rank: 13

15#
发表于 2009-12-7 05:29 PM |只看该作者
interface employeeData{

public void insert();
public void update();

}

interface 好像没什么东西能继承的样子, 只是规定 implement他的class 要有他的东西。

就是说 在 interface 内 宣布的东西, 当别的class implements employeeData 的话 就要遵从他拥有 insert() 和 update() 的 method?

我对interface 的了解度还不是很高。如

果不要在interface宣布的话 自己亲手在个自的class 内 写这些 update() , insert() 的method 不行吗?


回复

使用道具 举报

46

主题

6

好友

6456

积分

百变名嘴

Rank: 13Rank: 13Rank: 13Rank: 13

16#
发表于 2009-12-7 05:42 PM |只看该作者

回复 #14 goodday 的帖子

C# 很多不了解的地方。真是太奇怪了。

比如:

class employee{

public string name{ get ; set; }

public int age {get; set;}

}


geter 跟 setter 能融为一体 == 会不会太懒惰了?


回复

使用道具 举报

7

主题

1

好友

5108

积分

一流名嘴

Rank: 12Rank: 12Rank: 12

17#
发表于 2009-12-7 05:49 PM |只看该作者
原帖由 宅男-兜着走 于 2009-12-7 05:29 PM 发表
interface employeeData{

public void insert();
public void update();

}

interface 好像没什么东西能继承的样子, 只是规定 implement他的class 要有他的东西。

就是说 在 interface 内 宣布的 ...



我想你沒看清楚 "interface" 的用意才會有這樣的提問, 如果你的程式不大你也可以選擇不用接口.

http://java.sun.com/docs/books/tutorial/java/concepts/interface.html


回复

使用道具 举报

46

主题

6

好友

6456

积分

百变名嘴

Rank: 13Rank: 13Rank: 13Rank: 13

18#
发表于 2009-12-7 08:38 PM |只看该作者

回复 #17 Super-Tomato 的帖子

http://blog.163.com/shiningstar1 ... 785120076115442275/

抱歉, 之前真的不懂。

我理解了。

Employeedb.insert(manager);

然后 interface 还能 inherit interface , 而一个class 能 implements 多过一个 interface.

就会call到那个method 了。


回复

使用道具 举报

13

主题

0

好友

2113

积分

白金长老

Rank: 10

19#
发表于 2009-12-7 09:17 PM |只看该作者
原帖由 宅男-兜着走 于 2009-12-7 05:42 PM 发表
C# 很多不了解的地方。真是太奇怪了。

比如:

class employee{

public string name{ get ; set; }

public int age {get; set;}

}


geter 跟 setter 能融为一体 == 会不会太懒惰了?

  1.         public class human
  2.         {
  3.             //1.1 / 2.0  传统写法,属性必须有一个私有字段
  4.       private int age;
  5.             public int Age
  6.             {
  7.                 get
  8.                 {
  9.                     return age;
  10.                 }
  11.                 set
  12.                 {
  13.                     age = value;
  14.                 }
  15.             }

  16.             //3.5写法,直接定义即可;
  17.       public string Name { get; set; }
  18.             public Int64 ID { get; private set; }
  19.         }
复制代码


vs 是宠坏我们的


回复

使用道具 举报

13

主题

0

好友

2113

积分

白金长老

Rank: 10

20#
发表于 2009-12-7 09:24 PM |只看该作者
你想看看 你有了个 interface 如果有十个人 都要写 class
你的class 肯定是 under control not rubbish code

但没了??

十个不同的 standard 你不能统一 你的 stadard 咯

如 person < -- interface
inherit 了 firefighter, doctor, programmer, police men,

如 car <- interface (declare 4 个轮,一个方向盘, break)
inherit   toyota, honda, ferrari, bmw 而不会多一个 bmx 或penang 的三轮车

bmx 的 break 和 bmw 的 break 是不同的
但都是 disk break


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

JBTALKS.CC |联系我们 |隐私政策 |Share

GMT+8, 2024-7-1 04:13 PM , Processed in 0.116134 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

Ultra High-performance Dedicated Server powered by iCore Technology Sdn. Bhd.
Domain Registration | Web Hosting | Email Hosting | Forum Hosting | ECShop Hosting | Dedicated Server | Colocation Services
本论坛言论纯属发表者个人意见,与本论坛立场无关
Copyright © 2003-2012 JBTALKS.CC All Rights Reserved
合作联盟网站:
JBTALKS 马来西亚中文论坛 | JBTALKS我的空间 | ICORE TECHNOLOGY SDN. BHD.
回顶部