Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: El mas antiguo en 27 Diciembre 2022, 14:40 pm



Título: Primeros pasos con programación orientada a objetos(POO)
Publicado por: El mas antiguo en 27 Diciembre 2022, 14:40 pm
Esta vez estoy decidido a aprender la POO y no voy a continuar
con el próximo tema hasta aprender por lo menos lo básico.-
Primero dejo un programita para demostrarle que algo pude lograr.-

Código
  1. class Super:
  2.    def __init__(self, codigo, nombre, precio):
  3.        self.codigo = codigo
  4.        self.nombre = nombre
  5.        self.precio = precio
  6.  
  7.    def __str__(self):
  8.        return f"{self.codigo} {self.nombre} {self.precio}"
  9.  
  10.  
  11. if __name__ == '__main__':
  12.    tomate = Super(125, "Arcor tomate perita lata x 380 grs.", 129.50)
  13.    print(tomate)


Código
  1. import codecs
  2. import os
  3.  
  4. def principal():
  5.    lemario = leer_lemario()
  6.    palabra = True
  7.    mostrar = []
  8.    while palabra:
  9.        palabra = input("\n Ingrese la palabra a corregir...: ")
  10.        if buscar_palabra(palabra, lemario) == True:
  11.            print(f'\n La palabra "{palabra}" existe en el diccionario y es correcta.')
  12.        elif len(palabra) == 0:
  13.            break
  14.        else:    
  15.            for lema in lemario:
  16.                posibles = distancia(lema, palabra)
  17.                if int(posibles) == 1:
  18.                    mostrar.append(lema)
  19.            if len(mostrar) == 0:
  20.                print("\n No se encontraron palabras parecidas...")
  21.            else:    
  22.                print("\n ===== Posibles palabras correctas =====")
  23.                cont = 0
  24.                for mos in mostrar:
  25.                    print(" ", mos, end=" - ")
  26.                    cont += 1
  27.                    if cont == 5:
  28.                        print(" ")
  29.                        cont = 0    
  30.                print("\n =======================================")
  31.                mostrar.clear()
  32.  
  33. def buscar_palabra(palabra, lemario):
  34.    for lema in lemario:
  35.        if palabra == lema:
  36.            return True
  37.    return False
  38.  
  39.  
  40. def leer_lemario():
  41.    lemario = []
  42.    with codecs.open('Ortografia.txt', 'r', encoding='utf-8') as archivo:
  43.        for linea in archivo:
  44.            linea = linea.strip()
  45.            if len(linea) > 0:
  46.                lemario.append(linea)
  47.    return lemario
  48.  
  49.  
  50. def distancia(str1, str2):
  51.  posibles = []
  52.  d=dict()
  53.  for i in range(len(str1)+1):
  54.     d[i]=dict()
  55.     d[i][0]=i
  56.  for i in range(len(str2)+1):
  57.     d[0][i] = i
  58.  for i in range(1, len(str1)+1):
  59.     for j in range(1, len(str2)+1):
  60.        d[i][j] = min(d[i][j-1]+1, d[i-1][j]+1, d[i-1][j-1]+(not str1[i-1] == str2[j-1]))
  61.  return d[len(str1)][len(str2)]
  62.  
  63.  
  64. if __name__ == "__main__":
  65.    principal()

La pregunta es: ¿alguien me podría orientar para pasar este programa
(que intenta ser un corrector ortográfico)a la POO?.-
Si les resulta muy tedioso hacer un ej. completo, por lo menos desearía
que me muestren tan solo un método, desde ya muchas gracias…

Slds. Daniel ☕☕☕


Título: Re: Primeros pasos con programación orientada a objetos(POO)
Publicado por: Danielㅤ en 27 Diciembre 2022, 15:06 pm
Hola , ese programa ya es POO por el solo hecho de haber sido escrito en Python que es un lenguaje orientado a objetos.

Te cito esta parte que encontré en Google:

Cita de: Google
Todo es un objeto en Python

Eso es porque, en Python, todo es un objeto. Recuerda la definición de objeto: Un objeto en Python es una única colección de datos (atributos) y comportamiento (métodos).22 nov 2022.

https://kinsta.com/es/blog/programacion-orientada-objetos-python/#:~:text=Todo%20es%20un%20objeto%20en%20Python,-Te%20diremos%20un&text=Eso%20es%20porque%2C%20en%20Python,)%20y%20comportamiento%20(m%C3%A9todos) (https://kinsta.com/es/blog/programacion-orientada-objetos-python/#:~:text=Todo%20es%20un%20objeto%20en%20Python,-Te%20diremos%20un&text=Eso%20es%20porque%2C%20en%20Python,)%20y%20comportamiento%20(m%C3%A9todos))


Saludos


Título: Re: Primeros pasos con programación orientada a objetos(POO)
Publicado por: El mas antiguo en 27 Diciembre 2022, 16:04 pm
Hola tocayo, gracias por ocuparte, estoy desconcertado, ¿qué sugerís entonces
que no debería aprender POO?, no entiendo, ¿acaso son innecesarias las clases?.-

Slds. Daniel ☕☕☕


Título: Re: Primeros pasos con programación orientada a objetos(POO)
Publicado por: Danielㅤ en 27 Diciembre 2022, 16:53 pm
A ver yo solo te respondo para sacarte la duda de que lo que estas aprendiendo es POO porque programas escribiendo códigos en un lenguaje Orientado a Objetos.

Vos tenes que aprender lo que vos quieras aprender y lo que en el futuro te vaya a servir para crear tus proyectos/programas.

Y en cuánto a mi opinión si podes aprender POO tranquilamente, yo aprendí con python y he creado muy buenos programas, más que nada eran herramientas útiles.

Las clases si son muy necesarias, si vas a programar códigos muy simples y muy cortos podes no usarlas y usar solamente funciones, pero si vas a crear un proyecto mediano o grande, entonces si es totalmente necesario y fundamental que las utilices.


Saludos


Título: Re: Primeros pasos con programación orientada a objetos(POO)
Publicado por: explorer en 29 Diciembre 2022, 04:00 am
Por fortuna, la programación orientada a objetos tiene cada vez más opiniones en contra... y desde hace años.

https://medium.com/@konradmusial/why-oop-is-bad-and-possibly-disastrous-e0844fa96c1f


Título: Re: Primeros pasos con programación orientada a objetos(POO)
Publicado por: El mas antiguo en 29 Diciembre 2022, 15:19 pm
No puedo aportar demasiado, lo concreto es que aprender POO lo único interesante que logre es complicarme la vida.-
Gracias explorer por tu aporte...

Slds. Daniel ☕☕☕


Título: Re: Primeros pasos con programación orientada a objetos(POO)
Publicado por: Danielㅤ en 29 Diciembre 2022, 15:50 pm
No puedo aportar demasiado, lo concreto es que aprender POO lo único interesante que logre es complicarme la vida.-
Gracias explorer por tu aporte...

Slds. Daniel ☕☕☕

Vaya nunca me hubiera imaginado que digas eso de Python con todo lo que llevas aprendiendo, practicando y creando tus programas.

Si ahora no te gusta más Python pues bien podes aprender programación estructural, que sería lo opuesto de POO, también vas a tener que aprender a usar las llaves de apertura y cierre ( { } ) y el punto y coma ( ; ) como base fundamental.


Suerte


Título: Re: Primeros pasos con programación orientada a objetos(POO)
Publicado por: El mas antiguo en 29 Diciembre 2022, 16:11 pm
Amigo, o yo me exprese equivocadamente, o no me supiste interpretar.-
Me gusta muchísimo Python(no la POO), no puedo negar que me gusta mucho "C",
ya que más cerca de la memoria me encuentro, más cómodo, me siento,
más identificado con la programación, abrazo.-

Slds. Daniel ☕☕☕


Título: Re: Primeros pasos con programación orientada a objetos(POO)
Publicado por: reymosquito en 1 Enero 2023, 00:43 am
Hola Daniel:
                  vivo en un país gobernado por ladrones,corruptos e inútiles que mantienen vagos y favorecen a ladrones, han robado los cables de internet así que lo hago desde el télefono y es un asco, pero te diré:
1)tienes que pensar y entender bien cuando es mejor usar clases y cuando es innecesario
2)si entendiste lo básico es crear la clase y cada función es un método
3)en lo personal uso clases si hay herencia ,combinaciones,repeticiones, polimofirsmo, etc
4)te dejo una orientación, para que vayas viendo la aplicación en este caso.
5) obvio no haré todo, te lo dejo para que practiques y cualquier duda consultes.

Código
  1. #-*- coding: utf  -8 -*-
  2. import os
  3. class Archivo:
  4.    def __init__(self,nombre="Ortografia.txt"):
  5.        self.nombre = nombre
  6.        self.palabras= open(nombre).readlines() if os.path.exists(nombre) else []
  7.        self.palabras = [palabra.strip() for palabra in self.palabras]
  8.  
  9.    def buscar_palabra(self,buscada):
  10.        if buscada in self.palabras:
  11.            return True
  12.        return False
  13.  
  14. def principal():
  15.    lista = Archivo()
  16.    palabra = lista.buscar_palabra(input("Ingrese la palabra a corregir...: "))
  17.    if palabra:
  18.        print(f'La palabra  existe en el diccionario y es correcta.')
  19.  
  20.  
  21. if __name__ == "__main__":
  22.        principal()
  23.  


Título: Re: Primeros pasos con programación orientada a objetos(POO)
Publicado por: El mas antiguo en 1 Enero 2023, 21:43 pm
¿En qué país de sud América vivís? Ja ja ja
Gracias rey y me quedo con esta frase "en lo personal uso clases si hay herencia, combinaciones, repeticiones, polimorfismo, etc.”
Tenía un concepto casi fanatizado de la POO por eso me aclara mucho tu frase.-
Igual estoy intrigado que me va a pasar porque inicio ahora mismo estudiando QT6 y según el enunciado, todo tiene que ser hecho
con clases, veremos, un abrazo…