面向对象程序的一些令人敬畏的事情是你可以进行高效和快速的编程,但我没有学会如何使用它。到目前为止,我所知道的是如何以脚本风格的方式构建程序的基础知识,我从不使用方法/对象,所以我的问题是如何将我使用的代码转换为方法,以便我可以学习如何做到这一点,我用谷歌搜索,观看视频但我仍然不理解,我需要现实世界的例子。
这是我的脚本样式代码:
shipped
所有这个程序都是通过查找缺少的索引来检查无效的电子邮件。和/或'@',但是,我如何使用此代码的方法?我如何使用面向对象的编程来使这个更干净?这是使用一个类,我如何使用2个类来实现同样的事情?并谢谢。
答案 0 :(得分:1)
以下是将此代码转换为OO并开始以OO术语思考的方法:
1)什么"实体"我正在处理 - 电子邮件地址,所以我可能需要一个Email
类
public class Email
{
{
2)我可以从String构建一个电子邮件,但首先需要验证 - 我的类将有一个构造函数,它接受一个String并将其解析为Email
实例,该实例将具有isValid()
方法< / p>
公共类电子邮件 { String address = null;
public Email(String input)
{
// parse input into address
}
public boolean isValid()
{
return address != null;
}
public static void main(String[] args)
{
String[] studentRoster = {
"1,John,Smith,John1989@gmail.com,20,88,79,59",
"2,Suzan,Erickson,Erickson_1990@gmailcom,19,91,72,85",
"3,Jack,Napoli,The_lawyer99yahoo.com,19,85,84,87",
"4,Erin,Black,Erin.black@comcast.net,22,91,98,82",
"5,Adan,Ramirez,networkturtle66@gmail.com,24,100,100,100"
};
for (int k = 0; k < studentRoster.length; k++) {
Email email = new Email(studentRoster[k]);
if (email.isValid()) {
System.out.println(email.address + " is a valid email");
} else {
System.out.println(email.address + " is invalid email");
}
}
}
}
3)或者,我可以有一个静态containsEmail()
方法,它接受一个String并返回true / false
答案 1 :(得分:0)
您可以创建一个名为&#34的示例;示例&#34;并在其中定义一个方法,该方法将String Array作为参数。你可以编写类似这样的代码 -
public class Example {
public void display(String[] data){
for(int i=0;i<data.length;i++){
boolean flag=false;
String[] parts=data[i].split(",");
String email=parts[3];
int index1=email.indexOf("@");
int index2=email.lastIndexOf(".");
if(index1!=-1 && index2>index1){
flag=true;
}
if(flag==true){
System.out.println(email+ " is a valid email.");
}
else{
System.out.println(email+ " is an invalid email.");
}
}
}
}
现在创建另一个名为&#34的类;开始&#34;其中包含主要方法。在其中你可以声明你的String数组,创建一个示例类的对象,并通过传递String数组来调用它的显示方法。做这样的事情 -
public class Start {
public static void main(String[] args) {
String[] studentRoster =
{
"1,John,Smith,John1989@gmail.com,20,88,79,59",
"2,Suzan,Erickson,Erickson_1990@gmailcom,19,91,72,85",
"3,Jack,Napoli,The_lawyer99yahoo.com,19,85,84,87",
"4,Erin,Black,Erin.black@comcast.net,22,91,98,82",
"5,Adan,Ramirez,networkturtle66@gmail.com,24,100,100,100"
};
Example e=new Example();
e.display(studentRoster);
}
}