Welcome back to Intermediate Python. This is the second course in Python scripting for devops specialization. All right, let's drill in here. So in this module, we're going to take a step back, and we're going to think about object oriented code and how we can model. Okay, Now we're going to model things first before we develop them to save us time, right? Modeling is about communication and thinking about a problem from a simplification. Yeah. All right. So some learning objectives on this module, So upon completion of the module, I want you to be able to model class in UML class diagrams. That's one specific type of, UML. I want you to be able to model data visibility in UML class diagrams. I want you to be able to model relationships between classes and UML class diagrams. And lastly, I want you to be able to model relationships that hold collections of other objects. Okay, so in this first lesson, let's drill into UML class diagrams. All right, So, l stands for a unified modeling language. It's a general purpose development modeling language in the field of software engineering that is intended to provide a standard way to visualize the design of a system again. Remember, it's a model is a simplification and simplifications allow us to find problems through communication. Right. So you want to communicate what you plan to develop before you spend time developing it? There are many different types of UML models. We will focus on the structure design with class diagrams in this in this course. Okay, class diagrams describe the structure of a system by showing the systems classes, their attributes, operations or methods and the relationship among objects. All right, so for this lesson and a few of the future ones, we're going to use this sample model. Okay, This is for an order processing system, and you'll see that with object oriented programming, we break things down into objects. So I've got a customer object in the upper left. I've got an order object. As I'm moving left to right. I've got an order, detail object. This holds essentially the items that are ordered and their quantity. And then the items that are available is my last object at the top. Each order has a payment down below, and then I have three types of payments. I have a cash payment, a cheque payment and a credit payment and you'll see with each of these objects we have two different things. We store the the attributes about the object and the things the object knows how to do. Okay. And we call. Those attributes and methods are the things that knows how to do members of a class. And so, el provides a mechanism to represent these class members by essentially breaking the class into three sections. The top section has the name of the class and the example in front of you. It's bank account. The middle section has the attributes. Sometimes I'll call those fields. Sometimes we'll call those properties, but essentially their data about the class. So in this case, we've got an owner of a bank account and a balance and the bottom section are the things the class knows how to do right. These are methods, so you can deposit money in a bank account. You can withdraw money in a bank account. We can also specify visibility. Okay, And this is visibility and both the attributes and methods, and these essentially say, where in the code can these attributes and methods be seen, and we have four visibilities public, which is represented with a plus. That means anyone can see it. Any code can see this attribute or method we have private with minus, which means only this class can see this attribute and method. We have protected with the pound symbol, and that essentially means this class or other derivatives of this class or specializations. This class can see it and then the last one. The tilde is package. That means any code that's bundled together in this package can see it. Okay, and there are many different UML tools available for this class. I recommend you use a free online tool called Visual Paradigm. Visual Paradigm has a downloadable version, but it's really nice for this class because you can just use the URL in front of you, which is online visual paradigm dot com slash diagrams. And you'll see there's a class diagram section where you can drill in and build diagrams similar to one I just showed you all right, a little review here we want to communicate. What we plan to develop before we start doesn't really matter how much scale it is if it's going to take you more than you know some small amount of time, that small amount of time. Maybe an hour, right. You don't want to waste that time and build the wrong thing. Okay, so we're going to use models to do that. Communication and the visibility on the model controls parts of the code that can refer to the members of a class. And remember, there are many different UML diagram types in this class. We're going to focus on the structure diagrams of the class diagram, because that's really about the kind of scripting we're doing. But you may want to learn the other ones. Okay, see in the next lesson.