00:00
我来做啊,看着下面做,就是大家按照PPT上面的能做出来就相当不错了。你就照着PPT上,他让你怎么做你就怎么做,看大家能不能翻译。啊。他说先让我去定义AI Di接口也是定义AI文件。好,现在呢,我需要去定一个这样的一个文件。I student service.adl。再问下,其实他看到这些文件,它有点像什么?是不是像一个接口的定义啊,一个接口的Java文件,你可以这样先定一个接口再去改。来看啊。那你说我现在是在service里面写的还是service client?三位里面吧,嗯,来就在这里面。哎,不是这个。下面这一个,它里面new一个接口叫I student service。
01:03
就OK啦。能看到吧,好,那此时呢,在这里面我们可以去定义一个方法,教一个什么,大家看啊,Get student什么by ID,传一个ID吧,好,这个地方缺一个什么。死了的,那是我需要有这样一个类吧。好,我把这个类也定下来,这些大家是都能够写的,我们先把能写的快速的给它写出来,这是个包好了,那还有哪些呢?譬如说它有ID啊,它有name啊,还整一个吧,它有一个double类型的price身价吗?我还给你做了一个大类型的。
02:04
这个身价不是卖身啊。我看卖肾的剩剩的钱应该差不多的。好,来把它的一些get set方法。都整过来搞一些,就是运营方法可以整过来,都整好了是吧,好,现在你看它就没报错了吧,但现在我们定义的不是需要一个加文件。是一个AIDR文件,我怎么要把它改成后缀改一下呢?八。你敢?等于说加个a.AI d ly,他就想的就是你你改后缀改不掉的对不对。是在这个视窗下面改不掉。包是下面,因为包下面看的都是类,知道吧,应该在哪个里面去整它了,嗯,这里面两个看它这地方有一个,诶完了我一下子把这个包给删掉了,把包还是留下来啊。
03:11
在这个下面叫文件夹浏览器试装,他看的都是文件,知道吧,好找一下。这不是mon吗?这不一个他爸来八。AID轴。他是要报错呀,好。那报错的话,说明他有一些问题呗。嗯。我们可以去看一下啊,首先是第一个接口名跟文件名相同,现在相同吗。相同没问题,接口和方法前不用加访问权限修饰符。我加了吗?加了把他干掉。
04:05
这样的吧,嗯,好啦,现在还有错。还有错,看看他能不能有什么提示,Unknown return type什么意思?未知的返回类型student这样说的是,我们以前是不是觉得同一个包下面是不是就不用打包了呀?但他不是。他还需要导包。也是需要有一个import到哪个包啦。Qua qualify the name。啊,但是这个岛好像他说有点问题是吧,嗯,他说什么,那我有吗。有,那是因为我写的还不完整。
05:00
嗯,我还没写好啊,一点一点来啊。好,下面呢,还有一些其他说明,大家可以去看啊,我就不再一个一个去说了。好,这个我们已经定位到位了,对吧,看下面。这个有意思。他说,我的自定义的这个student必须去实现。拍接口什么意思?拍是打包的意思,包的意思要拍什么呢?可打包的。还记得我们那个序列化的吗?它不叫序列化,它叫什么可序列化?那也就是说。我们现在的这个论呢,还写的不完整。对吧,需要去实现,去实现一个什么拍。
06:00
接口。那实现这个接口就会要实现它里面的方法吧。打包看到啊。有一个打包的方法。就这个方法。这就是看它right to什么意思?写到包里去,那也就是说要将当前对象的这三个数据打成一个包。对吧,将当前对象的属性数据打成包,什么叫打成包了?写到什么包对象中,这里面它有一个对象。是不是就是这个拍摄呀,包对一下好了,你说我该怎么写了,它应该有什么方法,是不是应该有写的方法呀?好,假设我现在要把IE给他搞搞进去,你说read什么。
07:05
什么in?对吧,先什么是ID啊。依次往下吧,下面P的说,假设我要去写这个name right string就是我的name啊,下面去写我的,还有一个就是price身价啊,yes.write double。是吧,来去写我的price对吧,这是一个打包的方法。那有打包必然会有什么解包,这个方法不用啊,这个方法我们不用写啊,就解包,那怎么来去解包呢?他这个对象除了有打包的行为,还需要有一个解包的行为,解包呢,他是用另外一种方式来做的。
08:03
在这里面需要去定义一个。静态的final的拍点。拍什么内部的这样一个类对象啊,它里面声明的是一个。当前的类型student。而且这个名字必须跟他写的一模一样。你说我把这一个给它复制过来看下C。来看着啊,我现在呢,要去溜一个。这样的一个对象。好来啊走,实现它里面的。方法。这一个就比较有意思了,大家看啊,刚才是一个打包的方法,这一个看到create from p。
09:05
返回的是什么?是不是对象啊,那条件是个什么?是不是包啊?你说这是相当于干什么事?解包实际上简单来说就叫解包,对吗?解包什么叫解包啊?读取包装的数据并封装成是不是对象啊,啊功能对象,而我们当前就是16种对象,对不对?好啦,那你说读取怎么读啊。那你要看读什么对不对,你读ID,看它说点read in,你看到没有,它不是传什么参数的,对吧。没穿什么菜是吧,没有啊。
10:02
大家想啊,这是现在ID,诶,我前面啊,我来举例。你说这么样行不行呢?你说我这样去读读一个诗句是吧,这能行吗。不行。也就是说,举个例子吧。这是一块内存区域,先存了一个,存了一个int类型是吧,接着存了一个字符串,接着存了一个什么。八是吧,好了,你一上来去读字符串会是个什么效果呢?觉得。不是类型转换的问题。读这一片数据。就你读到的是这一片数据啊。你说还是以前的数据吗?那肯定不是了呀。它那个数据是不是有顺序的放的呀。
11:00
你读的时候,你写的时候顺序和读的顺序是一定要一致啊,你要知道为什么要一致的问题,就内存里面它是以顺序的排列的。对吧,而且不同类型的数据,它的长度也不太一样吧。即使长度一样,你读那肯定也不正确。对吧,本来我这个里面放的假设放的是ID,放的是name的数据,放的是price的数据。啊,你现在一上来读,我先读内。你想从左往右读吧。你能读到正常的数据吗?这不冷啊。嗯,非常简单一个事啊。好,那这个地方就要往下。就行了吧,好了,还有一个就是price,叫double类型的price source.read好了吧,下面知道怎么办了吧。
12:04
封装成使用的对象ID price。可以吧,嗯,可以好了,我们在这里面呢,写一个打印输出。来这个呢,是叫打包。是吧?那我前面先写个打包啊。嗯,就这样的好,下面一个。是安市的吗?是不是解包啊,啊解包。你吗?嗯,好,这里面还有一个方法。你看啊,传入一个size,返回一个student的数组,这是要干嘛呢?
13:00
这需要你返回一个指定大小的对象容器,你说我怎么办?我这里怎么对,很简单,New一个student的指定,它的容器的大小是多少?对吧,嗯,有这样一个事啊。好。那我们的student的这个类就写好了。那写好这个类呢,还不够啊,还有一个需要做的,大家看到这里。需要去创建一个对应的一个文件。student.ai文件。他呢有一个包名啊,包的声明主要下面叫P吧,Student冒号。
14:02
啊,分号是吧,好,那那就这么写,那照他写啊,大家不用想太多,它语法还是有点小难度,说实话我也建一个文件啊。我把这个呢,给它复制过来一下啊,稍微改改,要改谁呢,报名可能不一样对吧。那。是跟他这个报名一样的吧。咱们俩不在同一个包下面吗?可以了吧,嗯,大家看现在还有不要错哦。是不报错了。我们前面说过,Ail是用来干嘛的呀,看一下。用来生成。是不是通信代码呀。那现在的报错了。就应该要生成了,通信代码生成到哪去了,大家说。
15:04
你说要生成通讯代码生成的,它是不是自动生成的呀,自动生成的文件。就在GN下面。有吗?是不是有啊,嗯。有这样一个类啊,你你可看着是不是很很不爽啊,格式化是吧。隔唱了吧,哎,你觉得很高兴,哎呀,看着多爽啊。保存,他又这样。啊,没关系,我们可以在这里看。对吧,Outline里面可能看的清楚一点,也就是说现在呢,有这样一个接口对吧,这样一个接口的名字是不是我们定义的AIDL文件名呢?它生成的对应的接口名。啊,此时呢。它里面有生成有一个内部的一个抽象类啊叫哎,首先来看它啊,这个接口里面有一个方法。
16:07
这个方法是哪来的?是我定的AIDR文件里面的那个方法呀。对吧,接口里面不有一个方法证明吗。嗯,就这个。对吧,而这一个方法。是不是也是个抽象方法,它能实现吗?你说这个这个AIDR文AIDR工具,它能帮我们实现这个方法吗?他冷吗?那肯定不能,你他哪知道去哪找数据,最终这一个方法实现,肯定要我们自己写吧。对不对,好,接着往下看啊,继续往下看,你看它里面呢,生成了一个抽象的类,这个抽象类特别有意思,有意思在两点,第一点。它继承于什么棒的,我们用过吗?它是I棒的接口的一个子类吧。
17:03
诶,到时候我们的安棒的方法是不是就可以返回它呀。可不可以,当然可以对吧,好,而且你来看一下它是什么。实现的一个接口,这个接口是水一样。你说什么个意思?对,现在外部有一个接口。对吧,内部它有一个抽象内,这个抽象内呢,去实现的这个什么。接口。可以吧,而这个这个抽象内同时还去继承了谁。是个棒的类啊啊棒的类,但我跟大家说,你说这个抽象类有实现这个方法吗。没有,你说你咋知道没有了,他怎么实现呢?他不知道怎么实现的。
18:00
因为他的代码到底怎么写,他是根本不知道,因为最终写要靠我们根据实际情况去写。对吧。啊,他呢还是留着给我们用,而且它里面呢会写一些。啊,有这样一个。有这样一个,大家看看特别意思啊,还有这样一个方法叫as interface,作为一个接口啊,就是有些方法确实不不太好懂,但是你看到他的特点,他返回谁。I service student service这个接口的对象啊,而且这是一个实现的方法,大家看到了吗?对不对,那也就是说最终我可以通过这一个方法。能得到接口的对象,并且去调用它的。是不是get student by ID的这个方法呀?能理解吧,嗯,这个方法是有用的,我们后面会用的啊,不用着急啊,暂时呢,大家知道的就这些里面还有一些别的,大家可以暂时不用管它。
19:11
好了吧,好来继续,这个还得继续啊。下面呢,Eclipse自动生成的通信接口和类,我们已经看到了,是吧?啊不用再说了,下面好,我们刚才说过了,那个业务方法咱还没实现呢。咱现在要在service里面。去实现它,你看呢,我怎么个实现法呢,其实也比较简单去定义一个类。继承于它继承这个内部的这个类啊,看到继承它啊,你继承它它是不是抽象的呀,它抽象的是有一个这样一个方法吧,Get用BY。那我去给他实现了呗,这个是真正实现啊,我要根据实际的情况,甚至有可能需要去查数据库表数据吧。
20:03
嗯,去做一个事好了,这个地它干嘛呢,大家看这上面。我另外一个student service,我为什么能够去返回它?这个类型能不能匹配?是怎么匹配上来的?我是不是继承了他呀?而他继承了谁棒?诶,这个棒的和I棒的什么关系,是不是又是个继承关系?对吧,啊实现应该说它单单只是呢,这个地方确实是个实现,因为它是个什么接口,而我是个类,准确的说应该叫实现,对吧。嗯,好,这就在那来,我们去写一写。写起来这个有点小绕啊,来写一下。来。他我要去定义一个类。
21:03
嗯,叫student service,记住啊,这个service不叫服务。有一个另外一个概念业务类啊,第一个业务类,第一个处理什么呢?处理student相关的业务类。哎,大家知道什么叫业务吗?可能大家不知道,但大家知道它其实是一个简写。啊,业务逻辑就是业务逻辑的处理,什么叫业务逻辑的处理,就是很很可能出现很多什么判断啊,什么循环啊,需要计算呐,这以叫逻辑是吧。好来,他去看着啊,G乘于I student service点。
22:05
是吧,这样一个类对不对,好在这个里面来把它给它。实现了这一个咋写呢?这做一个模拟的实现就可以了吧,啊来看到我这里面先来一个打印。打一拿他。这个首先得说这是service端的对吧。Get,是student ID执行了好执行呢,传过了ID,这个ID由谁来传呢?是不扣头来传呢,而我返回的这一个student对象返回给谁呀?我的返回给谁?客户端呗,对吧,既然是客户端发的请求,最终是要把数据返回给他呀,来我们呢,来去模拟一个帕姆吧,身价啊1万。
23:05
这还是不多是吧。啊。这是1万吗?是18000,好,写好了,写好以后看到这里。我们在这个地方返回的是。六一个。是不是他对象啊好,我在这里面呢,写一个打印输出啊。好,到时候还有解绑的,我来看一下,我把这一个这个也给大家打印输出一下。这个没打印输出这个的只是一个提示,没有实质性的作用啊。好。嗯,好了啊,这样我们就把它。写好了,嗯。啊,整个服务器的呢,我们就写的差不多,没有什么别的需要写了啊,已经够了。
24:05
我们呢,先把这一个呢给它。
我来说两句