No he leido en profundidad dicho artículo .. pero la forma de trabajar con el objeto y las sesiones no me agrada mucho .. Yo usaría la siguiente construcción:
 
introduce_items_carrito.php 
 Código PHP:
    <?
include("../lib_carrito.php"); 
session_start();
if (!isset($_SESSION["ocarrito"])){ 
    $carrito= new carrito(); 
} else
   $carrito=$_SESSION["ocarrito"] ;
}
 
// y luego uso $carrito->metodos_que_correspondan() ...
$carrito->introduce_producto($_GET["id"], $_GET["nombre"], $_GET["precio"]);
 
 
// Para dejar todo cambio en la sesión .. si no lo hace el objeto como así parecer .. tendrás que hacer:
$_SESSION['ocarrito']=$carrito;
// y redireccionar a donde corresponda .. por ejemplo a otro script que haga el listado de lo que tengas en el carrito:
header ("Location: ver_carrito.php");
exit;
?>    
  Es decir .. si la sesión existe .. la sigo usando (ya está instanaciada y tiene sus variables) .. si no existe . .la defino y la instancio (el new es la "instancia"). 
El uso de session_start() es insprescindible para acceder a tus variables de sesión .. (no sé si en include("../lib_carrito.php");  se define .. si es así puedes omitirlo ahí ..) 
Por cierto .. todo ese HTML de "lib_carrito.php" sobra .. no sé por qué lo usas ahí .. eso es un objeto que tiene su formato y sus métodos .. por otro lado es donde lo usas. 
Un saludo,