UML语言详解与应用

需积分: 9 1 下载量 24 浏览量 更新于2024-07-28 收藏 9.24MB PPT 举报
"这是电子科技大学的一份关于UML的PPT,涵盖了软件开发规律、UML语言及其重要概念的介绍。" 在软件开发领域,UML(统一建模语言)是一种标准化的建模语言,用于可视化地表示面向对象的系统设计。UML提供了多种视图来全面描述系统的不同方面,包括结构视图、行为视图、实现视图等,帮助开发者更好地理解和沟通系统的设计思路。 面向对象编程(Object-Oriented Programming, OOP)是现代软件开发中的核心概念,它基于几个关键原则。首先,封装是OOP的基础,它将数据和操作这些数据的方法捆绑在一起,形成一个独立的单元,只允许通过预定义的接口与外界交互,从而保护数据的安全性。信息/实现的隐藏是封装的一部分,它限制了对外部世界的可见性,只允许通过特定接口访问对象的内部信息。 状态保持是指对象能够在其生命周期内保留信息,这些信息可以用于后续的处理。对象标识则是每个对象都有一个唯一的标识符,这使得在程序中可以区分不同的对象实例。对象间通信主要通过消息传递,即对象之间发送请求来执行特定操作。 类是OOP中的重要概念,它是创建对象的蓝图或模板,定义了一组具有相同属性和行为的对象。类的实例就是对象,而继承则允许子类继承超类的特性,这样可以实现代码的复用和扩展。多态性允许子类覆盖或重定义父类的方法,增强了代码的灵活性,重载则是在同一类中定义多个同名但参数不同的方法。 此外,一般性是指类的定义可以是参数化的或模板化的,使得一个类可以适应多种情况,增加了代码的泛化能力。这些概念都是面向对象技术的核心,它们源自多年的学术研究和实践,如Smalltalk语言提出的面向对象概念,以及Dijkstra的软件正确性思想,这些都对现代软件开发产生了深远影响。 UML作为面向对象设计的标准化语言,不仅涵盖了上述的基本概念,还提供了丰富的图形符号和图示,如用例图、类图、序列图、协作图等,用于描绘系统的静态结构和动态行为,是软件开发团队协作、交流和文档化的重要工具。通过学习和熟练掌握UML,开发者能更有效地设计和理解复杂的软件系统。

帮我把一下代码设置一个合理请求头,并加入一个延时import requests import os from bs4 import BeautifulSoup class NovelDownloader: def __init__(self, root_url): self.root_url = root_url self.book_list = [] self.chapter_list = [] def get_url(self, url): while True: try: res = requests.get(url) if res.status_code == 200: print("页面获取成功!") return res.text else: print("页面返回异常!", res.status_code) except: print("页面获取错误!") def get_book_list(self): res = self.get_url(self.root_url) html = BeautifulSoup(res, "html.parser") a_list = html.find_all("a", {"class": "name"}) for a in a_list: self.book_list.append(a["href"]) self.book_list = [self.root_url + i for i in self.book_list] self.book_list.remove('http://www.biquge5200.cc/') def get_chapter_list(self, url): res = self.get_url(url) html = BeautifulSoup(res, "html.parser") a_list = html.find_all("a", {"class": "chapter"}) for a in a_list: self.chapter_list.append((a["href"], a.text.replace("\n", ""))) def get_content(self, chapter): url = self.root_url + chapter[0] print(url) book_name = chapter[0].split("/")[1] print(book_name) if not os.path.exists(book_name): os.mkdir(book_name) res = self.get_url(url) html = BeautifulSoup(res, "html.parser") content = html.find("div", {"id": "content"}).text print(content) path = os.path.join(book_name, chapter[1]) with open(path, "w", encoding="utf8") as f: f.write(content) def main(self): self.get_book_list() for book in self.book_list: self.get_chapter_list(book) for chapter in self.chapter_list: self.get_content(chapter) if __name__ == '__main__': root_url = "http://www.biquge5200.cc/" nd = NovelDownloader(root_url) nd.main()

2023-06-02 上传

import requests import os from bs4 import BeautifulSoup class book_spider(): def __init__(self,root_url): self.root_url=root_url self.book_list=[] #一级页面中获取的数据(二级页面地址)存放于此列表 self.chapter_list=[] #二级页面中获取的数据(三级页面地址和章节名)存放于此列表 def get_url(url): while True: try: res=requests.get(url) if res.status_code==200: res.encoding =res.apparent_encoding print("页面获取成功") return res.text else: print("页面返回异常",res.status_code) except: print("页面获取错误") def get_book_list(self.url): res = self.get_url(url) html = BeautifulSoup(res,"html.parser") a_list = html.find_all("a",{"class":"name"}) for a in a_list: self.book_list.append(a["href"]) self.book_list = [self.root_url+i for i in self.bbok_list] self.book_list.remove('http://10.1.88.252:7000/庆余年') print(book_list) def get_chapter_list(self,url): res = self.get_url(url) html = BeautifulSoup(res,"html.parser") a_list = html.find_all("a",{"class":"chapter"}) for a in a_list: self.chapter_list.append((a["href"],a.text.replace("\n",""))) def get_content(self.chapter): url = self.root_url + chapter[0] print(url) book_name = chapter[0].split("/")[1] print(book_name) if not os.path.exists(book_name): os.mkdir(book_name) res = self.get_url(url) html = BeautifulSoup(res,"html.parser") content = html.find("div",{"id":"content"}).text print(content) path = os.path.join(book_name,chapter[1]) with open(path,"w",encoding="utf8") as f: f.write(content) def main(): self.get_book_list(self.root_url) for book in self.book_list: self.get_chapter_liat(book) for chapter in chapter_list: self.get_content(chapter) book_s = book_spider("http://10.1.88.252:7000") book_s.main()这是一段爬虫代码,找出里面的错误并改正

2023-06-02 上传