我是相当新的编程,并有一两件事我很迷茫。 什么是一流?我该如何使用呢? 我有点明白了,但我似乎无法找到一个完整的答案。
顺便说一句,如果这是特定于语言的,然后我在PHP编程。
编辑:还有别的我忘了说些什么。 具体来说,我的意思是问功能是如何定义的类使用。 我见过其中功能内部类中定义的PHP代码示例,但我不明白为什么。
我是相当新的编程,并有一两件事我很迷茫。 什么是一流?我该如何使用呢? 我有点明白了,但我似乎无法找到一个完整的答案。
顺便说一句,如果这是特定于语言的,然后我在PHP编程。
编辑:还有别的我忘了说些什么。 具体来说,我的意思是问功能是如何定义的类使用。 我见过其中功能内部类中定义的PHP代码示例,但我不明白为什么。
为了尽可能简洁:一类描述数据的集合,可以对自身进行操作。
例如,你可能有一个表示图像需要的类别。 这个类的一个对象将包含所有必要的描述图像的数据,然后也将包含类似的旋转,调整大小,裁剪等,也有,你可以用它来询问自己的属性的对象方法方法,像getColorPalette,或的getWidth。 这相对于能够直接访问颜色调色板或宽度在原始(非对象)的数据收集 - 由具有数据访问经过类方法中,所述对象可以强制保持一致性约束(例如,你应该不能改变宽度可变,而无需实际改变的图像数据是宽度)。
这是面向对象编程的过程编程的区别。 在过程式编程,你有数据,你拥有的功能。 该功能仅作用于数据,但没有数据的“所有权”,以及数据和利用它的功能之间没有根本的联系。
在面向对象编程,你这是在用行动相结合的数据对象。 每种类型的数据都具有定义的一组的,它可以在其自身上执行动作,和定义的一组属性的,它允许功能和其它的目的,以读取和在限定的,约束尊重的方式写。
点是脱钩彼此部分程序。 与图像类,你可以放心,所有操纵图像数据的代码是图片类的方法中。 你可以肯定没有其他的代码将被摆弄你的图像以意想不到的方式的内部。 在另一方面,你的形象类之外的代码就可以知道有操纵图像的定义的方式(调整大小,裁剪,旋转方法等),而不必担心图像数据是如何存储,或图像如何功能被实现。
编辑:还有一件事是有时难以把握的是术语“类”和“对象”之间的关系。 A“类”是如何创建特定类型的“对象”的描述。 影像类将描述什么是变量需要存储的图像数据,并给出实现代码对所有的图像的方法。 的图像对象,称为图像类的一个“实例”,是特定用途的该描述的存储一些实际数据。 例如,如果您有五个图像来表示,您将有五种不同的图像“对象”,所有相同的图像“类”。
类是在面向对象的编程(OOP)范例使用的术语。 它们提供抽象,模块化和更多的代码。 OOP是不特定的语言,支持它语言的其他例子是C ++和Java。
我建议的YouTube获得一个基本的了解。 例如视频和其他相关讲座。
由于您使用PHP,我会用它在我的代码示例,但大多数都应该适用。 OOP把一切作为对象,它是方法(功能)和变量的集合。 在大多数语言对象在代码的类来表示。 看看下面的代码:
class person
{
$gender = null;
$weight = null;
$height = null;
$age = null;
$firstName = null;
$lastName = null;
function __CONSTRUCT($firstName, $lastName)
{
//__CONSTRUCT is a special method that is called when the class is initialized
$this->firstName = $firstName;
$this->lastName = $lastName;
}
}
这是一个有效的(如果不是完全)班当你使用这个代码,你首先必须initailize这就像在一个变量使得它的副本类的一个实例:
$steve = new person('Steve', 'Jobs');
然后,当你想改变一些财产(不technicaly正确的单词,因为PHP中没有属性,但只是我承担本案我的意思是可变的)。 我们可以像这样访问他们:
$steve->age = 54;
注意:这里假设你是一个有点熟悉编程,我猜你是。
类就像是蓝图。 让我们假设你正在做一个游戏,在它的房子。 你就会有一个“家”类。 本课程介绍房子,并表示它能做什么,什么可以做它。 你可以有属性,如高度,宽度,房间数量,城市所在,等你也可以有“法”(花哨的名称函数的类内)。 例如,你可以有一个“干净的()”方法,它会告诉所有的房子里面的人进行清洁。
现在,假设有人在玩你的游戏,点击“作出新的房子”按钮。 然后,您可以创建该类的新对象。 在PHP中,你会写“ $house = new House;
”,现在$房子的所有属性和一个类的方法。
只要你想,你可以使尽可能多的房子,他们都将具有相同的属性,然后你就可以改变。 例如,如果住在房子里的人决定增加一个更大的空间,你可以写“ $house->numberOfRooms++;
”。 如果房间一所房子的默认数量为4,这个房子将有5间客房,所有的人将有4正如你看到的,属性是独立的一个到另一个。
这是基础; 有关于类多了很多东西,比如继承,访问修饰符等。
现在,你可能会问自己,为什么是这个有用的。 那么,面向对象编程的点(OOP)是想在程序中作为独立对象的所有的东西,试图设计他们,使他们可以不考虑背景的使用。 例如,你的房子可以是独立变量,可以是房屋的阵列内。 如果你有一个“居住”属性的“人”类,那么你的房子可能是属性。
这背后是类和对象的理论。 我建议你看看周围的代码示例。 如果你愿意,你可以看看我的乒乓球比赛我做编程的类。 它是用Python编写的,并且可以使用一些东西,你不明白,但你会得到的基本理念。 该课程是在这里 。
类本质上是一个抽象。
您有内置的数据类型,如“内部”或“串”或“浮动”,其中的每一个具有一定的行为,是可能的操作。
例如,你可以采取浮动的平方根,而不是一串。 您可以连接两个字符串,也可以添加两个整数。 每个这些数据类型的表示的一般概念(整数,文本或数字具有固定数量的数字显著,其可以是或可以不是分数)
类是一个简单的用户定义的数据可以代表其他一些概念,包括那些在其合法的操作。
例如,我们可以定义一个“密码”类,它实现预期密码的行为。 也就是说,我们应该能够把一个文本字符串,并从它创建一个密码。 (如果我输入“secret02”,这是一个合法的密码)。 这也许应该在此输入字符串进行一些验证,确保它至少N个字符长,也许它不是一本字典的单词。 它不应该允许我们读取密码。 (A密码通常表示为******
在屏幕上)。 相反,它应该简单地让我们的密码比其他密码,看它是否是相同的。
如果我刚才输入的密码是一样的,因为我最初签约的一个,我应该被允许登录。但是,密码实际上是 ,是不是我登录应用程序应该知道。 因此,我们的密码类应该定义一个比较函数,而不是“显示”功能。
一类基本上容纳一些数据,并定义了操作上的数据是合法的。 它创建了一个抽象。
在密码例子中,数据显然只是一个文本字符串内部,但类允许这一数据只有少数操作。 它阻止我们使用密码作为一个字符串,而是只允许特定的操作,这将使意义密码。
在大多数语言中,一个类的成员可以是私人或公共。 凡是是私有只能由类中的其他成员进行访问。 这就是我们将如何实现存储的密码类中的字符串。 它是私有的,所以它仍然是我们在类中定义的操作的可见的,但在类外的代码不能随便访问口令字符串里面。 他们只能访问类的公共成员。
一类是你能想到的,比如int,字符串等,一个实例可以使用面向对象编程语言进行结构的一种形式。 就像一个模板或蓝图的类需要的结构。 你写的这个结构与每一个关联的类。 从一类的东西将被用作在其中所有的sysync编程步骤发生在Main()方法的对象实例。
这就是为什么你看到的人写的代码像Car car = new Car();
从类绘制出一个新的对象。 我个人不喜欢这种类型的代码,它很糟糕,圆形,而且没有说明哪一部分是类语法(安排)。 太糟糕了,很多程序员使用的语法,难以初学者理解他们察觉什么。
可以将这看作是的,
CarClass theCar = new CarClass(); //
类主要承担无限多种形式。 您可以编写描述CarClass和产生的将是这些每一辆汽车的性能。 从属性,“得到”是什么(读)和“套”是什么(写入)数据得到他们,你只需使用点操作的对象实例产生在main(),并说明描述财产实际名词。 类是本体(东西喜欢数学和数字的话,则无法将其感知到的感觉,但它像#1思想)。 而不是写每一个项目作为变量的类使我们写对象的定义中使用。 随着写无限多的事情的能力有很大的责任! 像“世界,你好!” 这一点首先声明怎么说的太多关于我们的观众程序员。
所以
CarClass theCar = new CarClass(); //In a way this says this word "car" will be a car
theCar.Color = red; //Given the instance of a car we can add that color detail.
现在,这些都只是CarClass的实现,而不是如何建立一个。 你一定想知道什么是其他一些方面,字段,构造函数和类级别的方法,为什么我们使用它们和索引。
字段是类属性的修改。 这些往往是在一个私人的一流水平这么写的从外面没有什么影响,并趋向于集中在财产本身的功能。 它是在你在它前面的下划线声明通常另一个区域。 本场将增加必要保持数据的完整性意味着你将阻止人们值写入,使上下文没有意义的约束。 (Like如在负测量真正的...这仅仅是不是真实的。) 构造函数来描述一个构造最简单的方法就是让声称一些默认值在哪里构造范围奠定了对象属性。 在例如汽车具有颜色,最大速度,模型和公司。 但是,应将这些值是,应一些百万从CarClass副本中使用,或只是有几个? 构造函数使人们能够做到这一点,通过建立基本素质生成的副本。 这些值是在一个构造块分配给一个属性的缺省值。 为了设计一个构造块类型构造函数[标签] [标签]。 这里面简单地指那些属性你写的上方,在其上放置一个分配的值。 颜色=“红”; 如果你去到main(),现在使用的任何书面文件输出组件car.Color财产,如控制台窗口或文本框,你应该看到“红”。 细节是这样的隐式和隐藏。 相反,从一本书,你只是参考本书提供的每一个字的那么计算机获得剩余的信息。 这使得代码脚本结构紧凑,使用方便。
类级方法应该如何解释一遍又一遍地做一些处理。 通常,一个字符串或一些写作可以格式化一些书面资料一类,并与那些在写作,以显示与您的类属性来表示占位符格式化。 这是有道理的,当你做出一个对象实例,然后需要使用对象中的ToString()的形式来显示细节。 在一定意义上的类对象实例也可以包含像一本书或箱信息。 当我们写的ToString(),在一流水平一个ToString重写方法将打印您的自定义ToString方法以及应该如何解释代码。 你也可以写一个属性的ToString()和阅读。 这是下面的字符串应该读罚款,因为它是... Console.Writeline(theCar.Color); 一旦你得到许多对象,一次一个,你可以把它们放在一个列表,允许您添加或删除。 只是等待...
下面是关于类和对象的好页:
http://ficl.sourceforge.net/oo_in_c.html
这就是我谨请推荐一个资源http://www.cplusplus.com/doc/tutorial/
不知道为什么,但与C ++的首发申请OOP可能是自然之前任何其他语言的,上面的链接对我帮助很大,当我开始至少。
类是程序员的方式纪念他们的代码的领土。
他们是写大项目理应必要的。
莱纳斯和他的团队一定是错过了备忘录开发Linux内核。
然而,他们可以很好的组织和分类代码,我猜。 这使得它更容易浏览在IDE中的代码,如与对象浏览器的Visual Studio。
这里是类31种语言对一些使用示范rosettacode
首先回到了定义:
类定义:
对象的定义:
实例:
要使用一个类必须实例的类,但是一个构造器。 在PHP一个直接的例子是:
<?php
class SampleClass {
function __construct() {
print "In SampleClass constructor\n";
}
}
// In SampleClass constructor
$obj = new SampleClass ();
?>