We may earn an affiliate commission when you visit our partners.
Course image
蒋 严冰 and 邵 维忠

如果将软件开发人员看作行走江湖的武侠,那么各种软件开发技术就是武侠赖以傍身的武术秘籍。有的秘籍以易学灵巧见长,练习者很快掌握,并有立竿见影的功效,但失之厚重持久;有的秘籍初学乍练顿显困难,虽冥思苦解仍不得要领,需坚持不断的内功修炼方成正果,却是成为武林大侠必备的至宝。本课程有些类似于后者。

《面向对象技术高级课程》深入、系统、完整地讲解当今主流的面向对象软件开发方法的分析、设计、实现及重构方法,深入讲解UML语言的高级技术细节,以及近年来面向对象方法最新的发展趋势。课程集百家之所言,并结合主讲者最新的研究成果,并通过大量、丰富、完整、不同领域、应用不同技术的案例将其中的关键知识点串联起来,便于理解和应用。

本课程并不拘限于某一特定的面向对象的编程语言的编程技巧,但却包含了基于当前主流的面向对象编程语言的多项完整案例。本课程引导选课同学从更为抽象和共性的模型角度描述现实世界和软件世界,即构建分析与设计模型,之后再将其落实到软件编程实现。这种工程化的理念对于开发大型、复杂、困难、攸关软件系统是非常必要的,也是作为高级程序员、系统分析师、软件架构师等高级软件技术职位所必需具有的素质。

作为一门面向广大受众的中文MOOC课程,本次课程力求向不同需求和背景的朋友呈现中华文化氛围、生动有趣的案例、跨专业的广阔的视野、以及深入实用的技术综合。

Read more

如果将软件开发人员看作行走江湖的武侠,那么各种软件开发技术就是武侠赖以傍身的武术秘籍。有的秘籍以易学灵巧见长,练习者很快掌握,并有立竿见影的功效,但失之厚重持久;有的秘籍初学乍练顿显困难,虽冥思苦解仍不得要领,需坚持不断的内功修炼方成正果,却是成为武林大侠必备的至宝。本课程有些类似于后者。

《面向对象技术高级课程》深入、系统、完整地讲解当今主流的面向对象软件开发方法的分析、设计、实现及重构方法,深入讲解UML语言的高级技术细节,以及近年来面向对象方法最新的发展趋势。课程集百家之所言,并结合主讲者最新的研究成果,并通过大量、丰富、完整、不同领域、应用不同技术的案例将其中的关键知识点串联起来,便于理解和应用。

本课程并不拘限于某一特定的面向对象的编程语言的编程技巧,但却包含了基于当前主流的面向对象编程语言的多项完整案例。本课程引导选课同学从更为抽象和共性的模型角度描述现实世界和软件世界,即构建分析与设计模型,之后再将其落实到软件编程实现。这种工程化的理念对于开发大型、复杂、困难、攸关软件系统是非常必要的,也是作为高级程序员、系统分析师、软件架构师等高级软件技术职位所必需具有的素质。

作为一门面向广大受众的中文MOOC课程,本次课程力求向不同需求和背景的朋友呈现中华文化氛围、生动有趣的案例、跨专业的广阔的视野、以及深入实用的技术综合。

同时作为一门传授软件专门知识的MOOC课程,本次课程将为具有编程能力的同学带来有趣的软件开发项目作业,在实际的软件开发中感受学以致用的快乐,体会面向对象方法学的深刻内涵。

本次课程仍将邀请面向对象领域著名学者北京大学信息科学技术学院邵维忠教授和麻志毅副教授讲解某些章节,并对面向对象方法学中的某些关键问题进行讨论。

Enroll now

What's inside

Syllabus

第1节:绪论-软件开发方法的演化与最新趋势
介绍贯穿于课程始终的基本概念:系统、模型、方法学、方法、语言等,回顾软件开发方法学的历史、现状,并展望未来。
第2节:本课程方法概要与完整的引例及项目作业说明
Read more

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Builds a strong foundation for intermediate learners in object-oriented design and programming
Taught by professors at Peking University, Beijing, which is well-recognized for its Computer Science program
Emphasizes the practical applications of OOP through software development projects
Covers a comprehensive range of OOP concepts, including analysis, design, implementation, and refactoring

Save this course

Create your own learning path. Save this course to your list so you can find it easily later.
Save

Reviews summary

深入全面的面向对象高级课程

根据学生们说,这门面向对象技术高级课程深入且全面,为学习者提供了扎实的理论基础。许多评论提到课程对UML和面向对象分析与设计方法论的讲解非常到位,特别是其丰富的案例贴近实践的内容受到了广泛好评。尽管课程名称中带有“高级”,但许多同学认为它循序渐进,即使是具有一定编程基础的学习者也能跟上。不过,有少数评论指出,对于部分初学者而言,课程的抽象概念可能略显复杂,需要投入额外的时间消化。整体来看,这是一门highly recommended (强烈推荐)的课程,特别是对于希望系统提升面向对象设计能力或有志于成为软件架构师的学习者。
覆盖从分析到实现的完整流程。
"课程结构非常清晰,按照软件开发流程一步步展开,逻辑性很强。"
"从需求分析到设计再到实现,课程覆盖得很完整,形成了一个体系。"
"章节安排合理,每一步都讲得很细致,没有跳跃感。"
"我觉得课程的内容非常全面,把面向对象开发涉及的关键环节都讲到了。"
课程内容与高级软件职位需求匹配。
"这门课对于想成为系统分析师或架构师的人来说是必修课。"
"学完这门课,我对如何进行大型软件的分析和设计有了清晰的思路。"
"课程中讲的设计思想和方法在我的工作中可以直接应用,非常有价值。"
"感觉这门课提升了我从更高层面思考软件的能力,不再局限于编码细节。"
通过大量案例帮助理解和应用。
"课程中用到的案例非常丰富,而且涵盖了不同的领域,很有启发性。"
"老师通过实际案例讲解分析设计过程,让抽象的概念变得容易理解。"
"课程的案例部分设计得很好,能够把前面讲的理论知识串起来应用。"
"我觉得案例分析环节特别实用,让我看到了面向对象方法在实际项目中的应用。"
课程提供了坚实的面向对象理论基础。
"老师对OO思想和方法的讲解非常深入,理论功底很扎实。"
"这门课真正让我理解了面向对象的精髓,不仅仅是会用语言特性。"
"课程深入讲解了UML和设计模式,对提升我的设计能力非常有帮助。"
"我觉得这门课的理论部分讲得特别好,为我后续学习打下了坚实的基础。"
部分内容对初学者有挑战。
"课程有些概念比较抽象,对于没有OO基础的同学来说可能会有点吃力。"
"虽然课程很棒,但需要自己花很多时间去理解和消化,不是轻松的课。"
"我觉得这门课对学生的逻辑思维能力要求比较高。"
"老师讲得很好,但有些高级内容需要多看几遍才能完全理解。"

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in 面向对象技术高级课程(The Advanced Object-Oriented Technology) with these activities:
Review core concepts in object-oriented programming
Refresh your understanding of fundamental object-oriented programming concepts, such as encapsulation, inheritance, and polymorphism. This will provide a solid foundation for the more advanced topics covered in the course.
Show steps
  • Revisit your notes or textbooks from previous programming courses
  • Complete practice exercises or quizzes to test your comprehension
Review UML basics
Review your understanding of Unified Modeling Language (UML), including use cases, class diagrams, and other fundamental concepts, to prepare for the course's in-depth exploration of object-oriented analysis and design.
Browse courses on UML
Show steps
  • Revisit a UML tutorial or guide
  • Work through practice problems involving use case diagrams, class diagrams, and other UML elements
Seek guidance from experienced object-oriented developers
Identify experienced object-oriented developers in your network or online communities. Reach out to them and request guidance on your learning journey. Their insights can provide valuable perspectives and support.
Browse courses on Mentorship
Show steps
  • Attend industry events or meetups to connect with potential mentors
  • Reach out to individuals through professional networking platforms like LinkedIn
Five other activities
Expand to see all activities and additional details
Show all eight activities
Analyze and design simple systems using UML
Practice applying UML concepts by analyzing and designing simple software systems. This will reinforce your understanding of the relationships between system requirements, use cases, and class structures.
Browse courses on UML
Show steps
  • Identify a small-scale software system to analyze and design, such as a basic inventory or appointment scheduling application
  • Develop use cases to capture the functional requirements of the system
  • Create class diagrams to represent the system's structure and relationships between objects
Create a resource library for object-oriented methodologies
Compile a comprehensive collection of resources related to object-oriented methodologies, including articles, tutorials, books, and online courses. This library will serve as a valuable reference and support your ongoing learning.
Browse courses on Resources
Show steps
  • Conduct online research to identify relevant resources
  • Organize the resources into categories or themes
Document your UML designs
Create detailed documentation of your UML designs, including use cases, class diagrams, and any additional artifacts. This will help you solidify your understanding of the designs and provide a valuable resource for future reference.
Browse courses on UML
Show steps
  • Use a UML modeling tool or software to create visual representations of your designs
  • Write a comprehensive document that explains the purpose, structure, and relationships within your UML models
Participate in open-source software development
Contribute to open-source software projects that use object-oriented methodologies. This will provide you with hands-on experience in applying your UML knowledge and collaborating with other developers.
Browse courses on Open Source
Show steps
  • Find an open-source project that interests you and aligns with your skills
  • Review the project's documentation and codebase
  • Identify an area where you can contribute your knowledge and skills, such as bug fixing, feature development, or documentation improvement
Explore advanced topics in object-oriented design patterns
Delve into advanced topics in object-oriented design patterns, such as creational, structural, and behavioral patterns. Understanding these patterns will enhance your ability to design and implement robust and maintainable software systems.
Browse courses on Object-oriented Design
Show steps
  • Identify a specific design pattern or set of patterns that you want to explore in depth
  • Find online tutorials or courses that provide detailed explanations and examples of these patterns

Career center

Learners who complete 面向对象技术高级课程(The Advanced Object-Oriented Technology) will develop knowledge and skills that may be useful to these careers:
Software Architect
Software Architects design and implement software solutions that meet the needs of a business. They work closely with stakeholders to understand the business requirements and design a solution that will meet those needs. This course helps build a foundation in software architecture, which is a core component of this role.
Systems Analyst
Systems Analysts understand how computer systems can meet an organization’s needs. They analyze a company's needs, then design and implement computer systems that will help the company operate more efficiently. This course helps build a foundation in systems analysis and design, which is a core component of this role.
Business Analyst
Business Analysts work with stakeholders to understand their needs and develop solutions that meet those needs. They analyze business processes and develop solutions that improve efficiency and effectiveness. This course helps build a foundation in business analysis, which is a core component of this role.
Software Engineer
Software Engineers are responsible for developing, deploying, maintaining, and improving software applications and programs. They create software programs for computers, cell phones, gaming consoles, and other electronic devices. This course can help teach the skills needed for software development, such as analysis, design, implementation, and testing.
Information Technology Manager
Information Technology Managers plan, organize, and direct the activities of an organization's IT department. They ensure that the IT department meets the needs of the business, and that IT systems are secure and reliable. This course helps build a foundation in IT management, which can be helpful for Information Technology Managers.
Computer Programmer
Computer Programmers analyze business problems to translate them into specific program requirements. They also plan, design, code, and test computer programs. Someone in this role may work on software analysis, design, implementation, and testing. To advance to senior positions in this role, it is recommended to pursue an advanced degree, such as this course.
Software Quality Assurance Engineer
Software Quality Assurance Engineers ensure that software products meet quality standards. They test software products to identify defects and ensure that the products are reliable and meet the needs of users. This course may inform the testing of software products for quality.
Application Developer
Application Developers design, build, and maintain software applications. They work closely with end-users to understand their requirements and develop solutions that meet those needs. This course may inform the design and implementation of features for software applications.
Computer Systems Analyst
Computer Systems Analysts analyze, design, and implement computer systems. They work with users to understand their needs, then design and implement systems that meet those needs. This course offers an introduction to analysis and design of complex systems, which can be helpful for Computer Systems Analysts.
Security Analyst
Security Analysts identify, analyze, and respond to security threats. They work with stakeholders to develop and implement security measures to protect an organization's assets. This course offers an introduction to the analysis and design of complex systems, which can be helpful for Security Analysts.
Computer Scientist
Computer Scientists conduct research in various areas of computer science, such as artificial intelligence, computer graphics, and software engineering. They develop new theories and algorithms to solve problems in these areas. This course may inform the research of advanced topics in computer science, such as software analysis and design.
Data Architect
Data Architects create and maintain data models to optimize data storage and retrieval, ensuring data is accessible and secure. This course offers an introduction to analysis and design of complex systems, which can be helpful for Data Architects.
Information Security Engineer
Information Security Engineers design, implement, maintain, and monitor security measures to protect a company's sensitive information and systems. This course offers an introduction to the analysis and design of complex systems, which can be helpful in the role of an Information Security Engineer.
Database Administrator
Database Administrators design, implement, and maintain databases. They ensure that databases are secure, perform well, and are backed up. This course offers an introduction to analysis and design of complex systems, which can be helpful for Database Administrators.
Web Developer
Web Developers design, create, and maintain websites and web applications. They work closely with clients to understand their needs and develop solutions that meet those needs. This course may inform the design and implementation of features for web applications.

Reading list

We've selected 20 books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in 面向对象技术高级课程(The Advanced Object-Oriented Technology).
本书是面向对象设计模式的重要参考书,提供了设计模式的定义、原理和应用示例,对于理解和应用面向对象设计模式很有帮助。
本书是设计模式领域的经典著作,详细阐述了23种可复用设计模式,帮助读者提高面向对象系统设计的灵活性、可扩展性和可维护性。
本书介绍了重构的理念和方法,帮助读者改进既有代码的设计,提高软件的可维护性、可读性和可扩展性。
设计模式是面向对象编程中常用的最佳实践和解决方案。本书总结了23种经典的设计模式,对于提升面向对象编程的技能非常有帮助。
本书是数据结构和算法领域的经典教材,介绍了各种数据结构和算法的原理、实现和分析。对于理解数据结构和算法的基本知识和提升算法分析能力非常有帮助。
本书是计算机网络领域的经典教材,从自顶向下的角度介绍了计算机网络的原理、体系结构和协议。对于理解计算机网络的基本知识和提升网络编程能力非常有帮助。
本书是计算机组成与设计领域的经典教材,从硬件/软件接口的角度介绍了计算机系统的组成、设计和实现。对于理解计算机硬件和软件的交互原理非常有帮助。
本书以通俗易懂的语言介绍了设计模式,配有大量图表和示例,对于理解和应用设计模式很有帮助。
本书是C++编程领域的经典著作,提供了大量C++编程的最佳实践和技巧,帮助读者编写出高效、灵活和可维护的C++代码。
本书介绍了测试驱动开发的理念和方法,帮助读者提高软件开发的质量和效率。
Introduces the concept of test-driven development, a technique for writing high-quality software by writing tests before writing code.
Provides a comprehensive overview of agile software development, including its principles, patterns, and practices.
Introduces the basic concepts of object-oriented design, with a strong focus on Java programming language.
Classic work in the field of object-oriented design, providing a comprehensive overview of design patterns and their applications.
本书是 Java 编程的经典著作,提供了大量实用的 Java 编程技巧和最佳实践,对于提高 Java 编程能力很有帮助。
本书是 Java 编程的经典教材,提供了全面的 Java 编程知识,对于理解 Java 语言和编程基础很有帮助。

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser