Библиотека knigago >> Компьютеры и Интернет >> Базы данных >> Объектно-ориентированное программирование с помощью Python


СЛУЧАЙНЫЙ КОММЕНТАРИЙ

# 32, книга: Планета чудес
автор: Николай Иванович Сладков

Великолепная книга для детей, помню её ещё по своему детству. Столько интересных и невероятных фактов о нашей планете Земля собрано в этой небольшой книге. Всё подано настолько легко, интересно и в виде приключений по планете чудес. Уверен, всем детям эта книга очень понравится + в ней есть много картинок и фотографий, что сделает прочтение ещё интереснее.

СЛУЧАЙНАЯ КНИГА

Ирв Кальб - Объектно-ориентированное программирование с помощью Python

Объектно-ориентированное программирование с помощью Python
Книга - Объектно-ориентированное программирование с помощью Python.  Ирв Кальб  - прочитать полностью в библиотеке КнигаГо
Название:
Объектно-ориентированное программирование с помощью Python
Ирв Кальб

Жанр:

Базы данных, Учебники и самоучители по компьютеру

Изадано в серии:

неизвестно

Издательство:

неизвестно

Год издания:

-

ISBN:

неизвестно

Отзывы:

Комментировать

Рейтинг:

Поделись книгой с друзьями!

Помощь сайту: донат на оплату сервера

Краткое содержание книги "Объектно-ориентированное программирование с помощью Python"

Объектно-ориентированное программирование (ООП) — это метод, основанный на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного класса, а классы образуют иерархию наследования, что позволяет по-другому думать о вычислительных задачах и решать их с возможностью многократного использования. «Объектно-ориентированное программирование с помощью Python» предназначено для программистов среднего уровня и представляет собой практическое руководство, которое глубоко изучает основные принципы ООП и показывает, как использовать инкапсуляцию, полиморфизм и наследование для написания игр и приложений с использованием Python.

Книга начинается с рассказа о ключевых проблемах, присущих процедурному программированию, затем вы познакомитесь с основами создания классов и объектов в Python.

Затем вы научитесь создавать графические интерфейсы c помощью pygame, благодаря чему вы сможете писать интерактивные игры и приложения с виджетами графического пользовательского интерфейса (GUI), анимацией, различными сценами и многоразовой игровой логикой.

Читаем онлайн "Объектно-ориентированное программирование с помощью Python". [Страница - 100]

getType(self):
return self.shapeType

Далее, рассматривая методы __init__() трех классов, мы
обнаружили некий общий код, который запоминает окно, выбирает произвольный цвет и произвольное местоположение:
self.window = window
self.color = random.choice((RED, GREEN, BLUE))
self.x = random.randrange(1, maxWidth – 100)
self.y = random.randrange(1, maxHeight – 100)

И наконец, каждый класс устанавливает переменную экземпляра self.shapeType в соответствующую строку.
Всякий раз, находя набор классов, который реализует абсолютно одинаковый метод и/или содержит общий код в методе
с общим именем, мы должны признать его хорошим кандидатом для наследования.

318 Часть III. Инкапсуляция, полиморфизм и наследование

Давайте извлечем общий код из трех классов и создадим общий базовый класс с именем Shape, продемонстрированный
в листинге 10.6.
Файл: InheritedShapes/ShapeBasic.py
# Класс Shape – базовый
import random
# Настраиваем цвета
RED = (255, 0, 0)
GREEN = (0, 255, 0)
BLUE = (0, 0, 255)
class Shape():


def __init__(self, window, shapeType, maxWidth, maxHeight):
self.window = window
self.shapeType = shapeType
self.color = random.choice((RED, GREEN, BLUE))
self.x = random.randrange(1, maxWidth – 100)
self.y = random.randrange(25, maxHeight – 100)



def getType(self):
return self.shapeType
Листинг 10.6. Класс Shape для использования в качестве базового класса

Класс состоит только из двух методов: __init__() и
getType(). Метод __init__()  запоминает данные, переда-

ваемые в переменные экземпляров, затем произвольным образом выбирает цвет и начальное местоположение (self.x
и self.y). Метод getType() лишь возвращает тип фигуры,
заданной инициализацией.
Теперь мы можем написать любое число подклассов, которые наследуют от Shape. Создадим три подкласса, которые будут вызывать метод __init__() класса Shape, передавая строку, определяющую его тип и размер окна. Метод getType()
появится лишь в классе Shape, поэтому любой клиентский вызов getType() будет обрабатываться этим методом в унаследованном классе Shape. Мы начнем с кода класса Square, который продемонстрирован в листинге 10.7.

Глава 10. Наследование 319

Файл: InheritedShapes/Square.py
# Класс Square
import pygame
from Shape import *
class Square(Shape): 
def __init__(self, window, maxWidth, maxHeight):
super().__init__(window, 'Square', maxWidth, maxHeight) 
self.widthAndHeight = random.randrange(10, 100)
self.rect = pygame.Rect(self.x, self.y, self.widthAndHeight,
self.widthAndHeight)
def clickedInside(self, mousePoint): 
clicked = self.rect.collidepoint(mousePoint)
return clicked
def getArea(self): 
theArea = self.widthAndHeight * self.widthAndHeight
return theArea
def draw(self): 
pygame.draw.rect(self.window, self.color,
(self.x, self.y, self.widthAndHeight,
self.widthAndHeight))
Листинг 10.7. Класс Square, который наследует от класса Shape

Класс Square начинается с наследования от класса Shape .
Метод __init__() вызывает метод __init__() его базового
класса (или суперкласса) , определяя фигуру как квадрат
и произвольно выбирая ее размер.
Далее у нас идут три метода, реализация которых специфична для квадрата. Методу clickedInside() всего лишь требуется вызвать rect.collidepoint(), чтобы определить, был ли
щелчок внутри прямоугольника . Метод getArea() просто
умножает widthAndHeight на widthAndHeight . И наконец,
метод draw() рисует прямоугольник с помощью значения
widthAndHeight .
В листинге 10.8 продемонстрирован класс Circle, который
также был изменен, чтобы наследовать от класса Shape.

320 Часть III. Инкапсуляция, полиморфизм и наследование

Файл: InheritedShapes/Circle.py
# Класс Circle
import pygame
from Shape import *
import math
class Circle(Shape):
def __init__(self, window, maxWidth, maxHeight):
super().__init__(window, 'Circle', maxWidth, maxHeight)
self.radius = random.randrange(10, 50)
self.centerX = self.x + self.radius
self.centerY = self.y + self.radius
self.rect = pygame.Rect(self.x, self.y, self.radius * 2,
self.radius * 2)
def clickedInside(self, mousePoint):
theDistance = math.sqrt(((mousePoint[0] – self.centerX) ** 2) +
((mousePoint[1] – self.centerY) ** 2))
if theDistance --">

Оставить комментарий:


Ваш e-mail является приватным и не будет опубликован в комментарии.