面向对象
最近花时间写个订票系统,以前用C写过,因为在学java,所以就像写个试试,写完了让人一看,人家直接说没有必要看,完全没有面向对象的思想,全是面向过程的思想,我就很不明白,到底什么是面向对象,书上的完全不着实际,网上的代码很多是一些课程设计之类的,暂时看不懂,所以很纠结,该怎么办?
[解决办法]
就我理解的面向对象,就是说你要去办一件,你自己不去亲自动手,而是叫一个人帮你办。而其中的你就是主方法,而去办那件事的人,就是类。也就是说你把基本上所有的方法,要实现的内容都放在类,需要什么,就用主方法去调用,去实现那个类。(或许说的不是很准确,希望你原谅,呵呵)
[解决办法]
你可以先大致讲讲你的程序结构和流程
[解决办法]
面向对象最重要的就是要分清类职责和方法职责。先将订票系统作用例分析(用例图),根据用例将职责分开,设计类,定义类职责。将相关的数据与行为(方法)组织在一个类中。类定义好后就是定义方法职责,确认方法可见域。
[解决办法]
个人的理解:面向对象的理解是个漫长的过程,你即使告诉自己在设计一个系统的时候尝试将任何事物看做是一个对象来做,当在真正实践的过程中依然会觉得无从下手。
首先一点,面向对象是会用到很多面向对象的高级特性的,多态、封装、继承这三个核心概念需要大量的编程才能够真正理解,应当先把java的基本功打扎实;
其次一点,强迫自己继承、封装,套用设计模式也是没用的,因为没有真正理解,抛开书本的东西,自己设计的时候就傻了。设计是建立在大量的实践基础之上的。从细节开始,培养复用、面向接口编程、模块化、对象化的编程思维。
等到积累了足够多经验之后,再从宏观角度去思考什么是面向对象。
[解决办法]
我以前也是写C的,很难扭转到面向对象。我现在的办法是自己不写东西,因为一写就是C的思路。我大量看CODE,看多了貌似能有点感觉
[解决办法]
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
/**普通的JavaBean对象
* */
struct UserInfo{
int id;
char *userName;
char *password;
};
/**以Json形式输出对象
* */
void printJsonStr(struct UserInfo *userInfo){
printf("UserInfo{id:%d,userName:%s,password:%s}\n",userInfo->id,userInfo->userName,userInfo->password);
}
/**构造函数
* */
struct UserInfo *newUserInfo(int id,char *userName,char *password){
struct UserInfo *userInfo=(struct UserInfo*)malloc(sizeof(struct UserInfo));
userInfo->id=id;
userInfo->userName=userName;
userInfo->password=password;
return userInfo;
}
/**构造长度为len的字符串
* */
char *newString(int len){
return (char*)malloc(sizeof(char)*len);
}
void javaBeanTest(){
struct UserInfo *userInfo=NULL;
int id;
char *userName=newString(20);
char *password=newString(20);
printf("请输入id:\n");
scanf("%d",&id);
printf("请输入用户名:\n");
scanf("%s",userName);
printf("请输入密码:\n");
scanf("%s",password);
userInfo=newUserInfo(id,userName,password);
printf("您的个人信息:\n");
printJsonStr(userInfo);
}
void main(){
void javaBeanTest();
javaBeanTest();
}

* */
int **initTwoArray(int m,int n){
int i=0,*oneArray='\0',j=0;
int **array=(int **)malloc(m*sizeof(int *));
for(;i<m;i++){
oneArray=(int *)malloc(n*sizeof(int));
for(j=0;j<n;j++){
*(oneArray+j)=0;
}
array[i]=oneArray;
}
return array;
}
public class Fridge {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
/**
* 冰箱具有“打开”的功能
*/
public void open(){
System.out.println("打开"+name);
}
/**
* 冰箱具有“关闭”的功能
*/
public void close(){
System.out.println("关闭"+name);
}
}
public class Fridge {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
/**
*操作冰箱的类,使得数据和操作分离
*
*/
class OperateFridge{
public static void open(Fridge f){
System.out.println("打开"+f.getName());
}
public static void close(Fridge f){
System.out.println("关闭"+f.getName());
}
}