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

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

Read more

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

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

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

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

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

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

Enroll now

What's inside

Syllabus

第1节:绪论-软件开发方法的演化与最新趋势
介绍贯穿于课程始终的基本概念:系统、模型、方法学、方法、语言等,回顾软件开发方法学的历史、现状,并展望未来。
第2节:本课程方法概要与完整的引例及项目作业说明
Read more
第3节:面向对象方法学概述
第4节:面向对象方法与UML的历史与发展
第5节:需求分析——usecase图
第6节:系统分析—类图
第7节:系统分析—交互图
第8节:系统分析—状态图
第9节:系统设计—问题域部分的设计
第10节:系统设计—人机交互部分设计与控制驱动部分的设计
第11节:系统设计—数据管理设计、构件部署设计、活动图&系统实现
第12节:综合案例
期末考试

Good to know

Know what's good
, what to watch for
, 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

Save 面向对象技术高级课程(The Advanced Object-Oriented Technology) to your list so you can find it easily later:
Save

Reviews summary

In-depth, comprehensive object-oriented course

This course provides an in-depth and comprehensive overview of advanced object-oriented software development methods, including analysis, design, implementation, and refactoring. It covers the advanced technical details of the UML language and discusses the latest trends in object-oriented methods.

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.
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.
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.
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.
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.
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.
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.
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.
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.

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:
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 - 2024 OpenCourser